Skip to content

commercial-emacs/elpaso

Repository files navigation

Build Status

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)

elpaso -- Emacs Lisp Package Archive Self Officiator

Elpaso, Untethered Emacs Packager

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).

Install

Clone and make install.

Frequently Asked Questions

... 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. Then M-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 by M-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 bonafide v20210401 that the dash author intended or a MELPA-imposed hack.

Some uninteresting comments about the ELPAs.

About

Emacs Lisp Package Archive Self Officiator (ELPASO)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published