• Stars
    star
    223
  • Rank 178,458 (Top 4 %)
  • Language
    Ruby
  • Created about 12 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Emacs Version Manager

Emacs Version Manager

Gem Version Build Status Coverage Status

Deprecation Warning!

As Travis is moving towards a container-based infrastructure, hence sudo is not possible, EVM added support for Travis specific binaries (ends with -travis), which will be installed in /tmp.

All -bin versions will are deprecated and will be removed. Do not use them!

To run EVM on Travis, set the EVM path to /tmp:

$ evm config path /tmp

See https://gist.github.com/rejeep/ebcd57c3af83b049833b for more information on how to use EVM on Travis.

Why EVM?

  • Did you ever wonder how to install Emacs? Homebrew, apt-get, Emacs for OSX, Compile from scratch, etc...

  • Are you currently maintaining an Emacs package? How do you know it works? Because you have tests of course. Ok, so you know it works on your platform and with your Emacs version. But what about all other versions that people are using? Does your package work for them?

  • EVM provides Linux pre-compiled binaries to allow for quick installation on CI systems.

Platform Support

OSX

Supported! (currently no pre-compiled binaries for CI)

GNU/Linux

Supported!

Windows

Not supported. Need help from someone running Windows.

Installation

Default installation directory for EVM Emacs versions is /usr/local/evm. This can be changed with the config command:

$ evm config path /foo/bar

No matter what installation approach you choose, create the installation directory and give your user access rights, for example:

$ sudo mkdir /usr/local/evm
$ sudo chown $USER: /usr/local/evm

Automatic

$ curl -fsSkL https://raw.github.com/rejeep/evm/master/go | bash

Add EVM's bin directory to your PATH.

$ export PATH="$HOME/.evm/bin:$PATH"

Homebrew

NOT ADDED YET

$ brew install evm

Ruby gem

$ gem install evm

Manual

$ git clone https://github.com/rejeep/evm.git ~/.evm

Add EVM's bin directory to your PATH.

$ export PATH="$HOME/.evm/bin:$PATH"

Usage

In the Evm bin directory, there are a few commands:

  • evm - Manage Emacs packages
  • emacs/evm-emacs - Emacs shim with currently selected Emacs package

list

To list all available Emacs versions you can install, run:

$ evm list

The output will look something like this:

emacs-23.4
emacs-24.1 [I]
emacs-24.2
* emacs-24.3 [I]
emacs-24.3-travis [I]
...

The [I] shows what versions are currently installed and the * shows what version is currently selected.

install

To install a version, run:

$ evm install version

Example:

$ evm install emacs-24.3

use

To start using a specific package, run:

$ evm use name

Example:

$ evm use emacs-24.2

The Evm binary will update and use that Emacs package.

disuse

To stop using an EVM binary and restore your personal or system defaults:

$ evm disuse

uninstall

To uninstall a version, run:

$ evm uninstall emacs-24.2

bin [name]

Prints the full path to name's Emacs executable. If no name is specified, use currently selected.

$ evm bin # /usr/local/evm/emacs-24.5/Emacs.app/Contents/MacOS/Emacs
$ evm bin emacs-24.2 # /usr/local/evm/emacs-24.2/Emacs.app/Contents/MacOS/Emacs

help

For more information, run:

$ evm --help

Contribution

Be sure to!

Implement the features and don't forget to test it. Run the tests with:

$ rspec spec

If all passes, send us a pull request with the changes.

Adding a new Emacs version

Copy an existing recipe in the recipes directory and make modifications for the new version. Also add the new version to the Travis configuration.

Adding Travis binary

If you want to contribute a Travis binary, these instructions will help.

  1. Install Docker

  2. Run the generate script:

$ docker/build-release.sh 27.1 linux-xenial
$ ls emacs-27.1-travis-linux-xenial.tar.gz
emacs-27.1-travis-linux-xenial.tar.gz

Caution: Be prepared to wait!

If you are running this script for the first time, it will need to create the build image, which means downloading a large (> 10 GB) base image from Travis CI, and further configuring it with the tools needed to compile Emacs from source.

In addition, the Emacs build takes time and generates a fair amount of console output.

  1. Create a new recipe and make a pull request.

  2. Ask maintainer to add a new release and add the binary.

More Repositories

1

f.el

Modern API for working with files and directories in Emacs
Emacs Lisp
680
star
2

prodigy.el

Manage external services from within Emacs
Emacs Lisp
544
star
3

drag-stuff.el

Drag stuff around in Emacs
Emacs Lisp
232
star
4

wrap-region.el

Emacs minor mode to wrap region with tag or punctuations
Emacs Lisp
138
star
5

emacs

My Emacs configuration files
Emacs Lisp
114
star
6

ruby-tools.el

Collection of handy functions for Emacs ruby-mode
Gherkin
91
star
7

ert-runner.el

Opinionated Ert testing workflow
Emacs Lisp
85
star
8

yasnippets

Comprehensive collection of yasnippets
Groff
57
star
9

commander.el

Emacs command line parser
Emacs Lisp
56
star
10

ruby-end.el

Emacs minor mode for automatic insertion of end blocks for Ruby
Emacs Lisp
53
star
11

git.el

An Elisp API for programmatically using Git
Emacs Lisp
41
star
12

nvm.el

Manage Node versions within Emacs
Emacs Lisp
40
star
13

mactag

Ctags for Ruby/Rails
Ruby
35
star
14

el-mock.el

Mocking library for Emacs
Emacs Lisp
34
star
15

authlogic-password-reset-tutorial

Authlogic Password Reset Tutorial
34
star
16

ansi.el

Emacs library to convert strings into ansi
Emacs Lisp
30
star
17

ert-async.el

Async support for ERT
Emacs Lisp
16
star
18

html-script-src.el

Script Src command for Emacs
Emacs Lisp
13
star
19

keats

Keybinding Cheat mode for Emacs
Emacs Lisp
9
star
20

apes

Audio Program for Editing Sound
Java
9
star
21

enclose.el

Emacs minor mode to enclose cursor within punctuation pairs
Emacs Lisp
9
star
22

inline_attachment

Inline images in Rails emails
Ruby
6
star
23

handoff.el

Get your hand off that mouse!
Emacs Lisp
5
star
24

jq.el

Emacs Lisp
4
star
25

action_by_name

Call controller action by component name in Java
Java
2
star
26

golf

Ruby
1
star
27

rejeep.github.com

CSS
1
star
28

chrome-cli.el

Emacs Lisp
1
star
29

evm.el

Emacs Version Manager
Emacs Lisp
1
star
30

bsboll

Ruby
1
star