Bob Slydell: | So you physically take the specs from the customer? |
Tom Smykowski: | Well... no. My secretary does that, or the fax. |
Bob Porter: | So then you must physically bring them to the software people? |
Tom Smykowski: | Well. No... yeah, I mean sometimes! |
—Office Space (1999)
Self-officiating package manager for the emacs text editor. Like quelpa.
Elpaso abjures the middle-man role played by package archive operators like ELPA and MELPA, building packages directly from upstream sources.
M-x elpaso
Specifying owner/package, e.g.,
magnars/dash.el
yields the desired github or gitlab repo. More conveniently, enter free-form keywords to conduct a github search. As of this writing, gitlab's nascent search functionality is unviable. First-time users will need to authenticate with both github and gitlab's GraphQL API.If the target has not registered a recipe, elpaso proceeds with package.el's baseline assumptions. Alas most packages in the wild do not adhere to package.el's somewhat arbitrary demands. See FAQ below to assist elpaso's efforts.
M-x elpaso-refresh
- Refresh recipes from all sources in
elpaso-admin-cookbooks
(defaults to melpa, elpa, and nongnu). M-x elpaso-install
- Enter the package name to install or reinstall.
M-x elpaso-delete
- Enter the package name to delete.
M-x elpaso-edit
- Edit user recipes.
M-x elpaso-purge
- Deletes residual files in
elpaso-defs-toplevel-dir
(defaults to~/.emacs.d/elpaso
).
Clone and make install
.
- ... How can I advance elpaso's cause?
Elpaso seeks to realize an autonomous, gatekeeper-less future. For simple packages, package authors need only ensure
M-: (package-buffer-info)
parses when visiting their<name>.el
main file. For multi-file packages,git add .recipe
to your toplevel directory a suitable recipe in the MELPA or ELPA format, e.g.,(my-package :url "github.com/my-package.git" :files ("my-package*.el" "and-subdirectory"))
- ... Why didn't elpaso find marquee package XYZ on github?
When elpaso searches for "language: Emacs Lisp" via github's query semantics, packages consisting of, say, more C code than elisp won't show up in the results. One good example of this is politza/pdf-tools. Package authors can more explicitly categorize their work as primarily elisp by
git add .gitattributes
a line like,c-code-folder/* linguist-vendored
but at least in the case of politza/pdf-tools, this would be inaccurate as much of the C code therein was original, and not vendored.
- ... But I like quelpa.
- Quelpa is essentially MELPA's vassal, having slavishly copy-pasted the package-build code, and thus hardwires MELPA's recipe format, and inherits MELPA's erroneous versioning.
- ... Where did you put my pre-existing installation of package XYZ?
- I put it in
~/.emacs.d/elpaso/backups
. - ... How can I integrate this with
use-package
? M-x customize-option RET use-package-ensure-function RET Custom: elpaso-use-package-ensure-function
- ... How do I pin commits, freeze working configurations, do everything that Straight does?
- You don't, I'm afraid.
- ... How can I edit packages in-place like Straight?
Come down from the ledge. Fork-clone the package as you normally would, say in
/home/kilroy/package
. ThenM-x elpaso-edit
.Add the entry:
;; -*- lisp-data -*- ((package :url "/home/kilroy/package" :files ("*.el" "lisp/*.el")))
(the recipe will vary), then
C-c C-c
, followed byM-x elpaso-install RET package
.- ... Why did elpaso unnecessarily fetch a dependency?
- Elpaso can't know whether a package-require such as
(dash 20210401)
signifies a bonafidev20210401
that the dash author intended or a MELPA-imposed hack.
Some uninteresting comments about the ELPAs.