The purpose of this repository
I use emacs on a variety of machines and systems, so in order
to manage the different configurations I use for the different
programming languages I program in for the different systems I
use it seems like a good idea to have my own elpa repository.
How to use this repository
Although you are free to use this repository as you like, there are a bunch
of things you should take into account.
Also there is a recommended way to use the provided packages, for they come
in (install . config) pairs.
Package namespace
Every package in this repository is and will be prefixed with either
air-c-
or air-i-
. This is so there can be
packages that refer to other packages; air-c-lsp-haskell
is the configuration package for lsp-hakell
.
Installation packages
The packages that are prefixed with air-i-
are installation
packages and are not intended to be installed permanently, instead you
are supposed to try and run the <package name>-run
function that each installation package provides, i.e.: install -> run ->
uninstall.
Additionally, the installation packages might be specialized for different cpu
architectures, for they might attemp to install binaries. Such packages are also
prefixed with the arch they target, e.g: air-i-amd64-foo
.
The following elisp code implements the idea of trying a package:
(defvar tmp-packages-list nil "List of packages intended for removal.")
(defun try-out (package-name)
"Installs a package intended to be removed later."
;; Interactive definition stripped from package.el
(interactive
(progn
;; Initialize the package system to get the list of package
;; symbols for completion.
(package--archives-initialize)
(list (intern (completing-read
"Try package out: "
(mapcan
(lambda (elt)
(and (or (and (or current-prefix-arg
package-install-upgrade-built-in)
(package--active-built-in-p (car elt)))
(not (package-installed-p (car elt))))
(list (symbol-name (car elt)))))
package-archive-contents)
nil t)))))
(package-install package-name)
(add-to-list 'tmp-packages-list package-name))
(defun delete-tmp-packages ()
"Deletes the tmp packages."
(dolist (pkg tmp-packages-list)
(package-delete packages)))
(add-hook 'kill-emacs-hook #'delete-tmp-packages)
When exiting emacs, all the installed packages trough try-out
will be
uninstalled.
Then to run the installation package air-i-foo you would run the following:
M-x try-out RET air-i-foo RET M-x air-i-foo-run RET
Configuration packages
Configuration packages are prefixed with air-c-
and also provide a
<package name>-run
function, however they are regular packages
and the run function just sets up the required configuration, so just run
it in your init file or whenever you want.