elpaso -- Emacs Lisp Package Archive Self Officiator

June 14, 2022 ยท View on GitHub

|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

.. image:: https://github.com/dickmao/elpaso/blob/master/thumbnail.png :target: https://youtu.be/hZdBCyD5TzA :alt: 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.

.. _Getting started: http://melpa.org/#/getting-started .. _Issue 2944: https://github.com/melpa/melpa/issues/2944 .. _Advising Functions: https://www.gnu.org/software/emacs/manual/html_node/elisp/Advising-Functions.html .. _reimplementing their service: https://github.com/dickmao/shmelpa .. _quelpa: https://github.com/quelpa/quelpa .. _package-build: https://github.com/melpa/package-build .. _politza/pdf-tools: https://github.com/politza/pdf-tools .. _uninteresting comments: https://raw.githubusercontent.com/dickmao/elpaso/dev/elpas.txt .. _MELPA: https://github.com/melpa/melpa#recipe-format .. _ELPA: https://git.savannah.gnu.org/cgit/emacs/elpa.git/plain/README

.. |build-status| image:: https://github.com/dickmao/elpaso/workflows/CI/badge.svg?branch=dev :target: https://github.com/dickmao/elpaso/actions :alt: Build Status

.. |---| unicode:: U+02014 .. em dash :trim: