Learning Emacs

If you are new to Emacs, be prepared for a very rewarding learning curve!

Firstly, install Emacs from emacs.link.

Our goal in this page is to let you know about some excellent resources to learn Emacs and get you set up with some basic configuration.

If you’re a Vim-fidel wanting to try out Emacs, you may feel at home in Evil Mode (we’ll show you how to do that below).

Some useful resources to learn Emacs:

The use of EmacsWiki is discouraged as much of the content is out of date.

The following is intended to set some built-in Emacs variables that often confuse / annoy new users and is by no means a fully functional development environment. Put this into your ~/.emacs.d/init.el and restart Emacs. Make sure you do not have a stale ~/.emacs file left over from a previous attempt to use Emacs.

;; global variables
 inhibit-startup-screen t
 create-lockfiles nil
 make-backup-files nil
 column-number-mode t
 scroll-error-top-bottom t
 show-paren-delay 0.5
 use-package-always-ensure t
 sentence-end-double-space nil)

;; buffer local variables
 indent-tabs-mode nil
 tab-width 4
 c-basic-offset 4)

;; modes
(electric-indent-mode 0)

;; global keybindings
(global-unset-key (kbd "C-z"))

;; the package manager
(require 'package)
 package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                    ("org" . "http://orgmode.org/elpa/")
                    ("melpa" . "http://melpa.org/packages/")
                    ("melpa-stable" . "http://stable.melpa.org/packages/"))
 package-archive-priorities '(("melpa-stable" . 1)))

(when (not package-archive-contents)
  (package-install 'use-package))
(require 'use-package)

Inside Emacs Lisp files, you can type C-h v over any variable (e.g. in the setq and setq-default lists) to see its help page, and C-h f over any function to see its help page.

We recommend use-package to manage your configuration and as the recommended way to install packages. e.g. if you want to use evil-mode

(use-package evil

you can execute this without restarting Emacs by moving the cursor (“point” in Emacs nomenclature) to the end of the line and typing C-x C-e.

Updating MELPA

To update all MELPA packages, type:

M-x list-packages [RETURN] U [RETURN] x [RETURN]

or invoke the package-utils-upgrade-all function from package-utils.

General Emacs Help

Most of the time, you might find what you need from Emacs and not ENSIME. In these cases, the typical help forums are:

If you are uncomfortable engaging with any of these external communities (they do have some level of rules in place, such as Stack Exchange / Emacs mailing list / IRC channels), please feel free to talk about general GNU Emacs usage at gitter.im/ensime/ensime-emacs.