Emacsit is a toy package manager for emacs. It’s somewhat inspired from vim-plug.
The motivation behind emacsit is to let people easily get any package, from any source. Emacsit allows you to easily clone the required packages from any git repository and immediately put it in your emacs load file. It works on very basic functions, and it doesn’t cause any freezes while it manages your packages. Some people do not care about putting there packages up on MELPA or ELPA, yet there packages are pretty good. Emacsit has been create for using such packages.
The code for this project is extremely simple. Every package added to the list of packages is converted into a string of the form: “https://github.com/SidharthArya/emacsit@/home/user/.emacs.d/packages/SidharthArya/emacsit”
So string before @ conveys the repository to be cloned and string after @ is the directory where the package is to be installed.
emacsit-savedir variable is used to specify the directory where all the packages are installed.
It is absolutely required that the dependencies be installed before actual package. This process is manual and may require a few tries, since many packages do not mention clearly which packages they depend on.
I created this package so that we can get a similar control, as Slackware or Gentoo Linux gives, but it seems like most emacs packages have dependencies which are not optional in nature, so there doesn’t seem to be any explicit necessity for this package unless packages start giving optional compile features for their packages, which may be added complexity for other major packages managers.
Feel free to open issues and pull requests if you can offer any improvement or suggestion for this packages.
- Emacs built-in
packages.elwith MELPA or
- el-get - Look’s Amazing to me. If you have packages from various types of locations: github, emacswiki, GNU ELPA or Marmalade, privately hosted pages, git, bzr, CVS, el-get is one of the goto choices.
- straight.el - It has a lot of features and many people swear by it (Currently I use straight.el)
- quelpa - Build and install your Emacs Lisp packages on-the-fly and directly from source.
- feather.el - This one seems to be similar to
emacsitbut better. Haven’t tried though.
Use one of the above, since they are much better supported.
All you have to do for configuration is to load the emacsit directory to your load path or load emacsit.el directly, and add a variable emacsit::packages which is the list of packages you want to install.
git clone --depth=1 https://github.com/SidharthArya/emacsit $HOME/.emacs.d/packages/SidharthArya/emacsit
Add this to your
(add-to-list 'load-path "~/.emacs.d/packages/SidharthArya/emacsit") (require 'emacsit) (setq emacsit::packages '( ;; List of packages you need abo-abo/avy creichert/ido-vertical-mode.el jwiegley/use-package sidhartharya10/emacsit magnars/expand-region.el emacs-evil/evil https://code.orgmode.org/bzg/org-mode )) (setq emacsit::savedir "~/.emacs.d/packages") (emacsit::load)
Following keybindings can be used.
(define-prefix-command 'emacsit) (define-key global-map (kbd "C-x p") 'emacsit) (define-key global-map (kbd "C-x p g") 'emacsit::get) (define-key global-map (kbd "C-x p l") 'emacsit::load) (define-key global-map (kbd "C-x p b") 'emacsit::byte-compile-all) (define-key global-map (kbd "C-x p u") 'emacsit::update)
C-x p gto downlaod packages.
C-x p lto load packages.
C-x p bto byte compile packages.
C-x p bto byte update packages.
The two functions emacsit::get and emacsit::load fetch the required packages and append then to your load path respectively. These functions are also interactively callable, so, if you don’t want to fetch the packages every time you start emacs, remove emacsit::get from your configuration.
- No dependency management
- [X] Compiling
- [X] Updating
- [X] Compile Cask Packages
- [ ] Cleaning