Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Major mode for editing Elixir files
Emacs Lisp Ruby Python
Branch: master
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

License GPL 3 Build Status MELPA Stable MELPA

Elixir Mode

Provides font-locking, indentation and navigation support for the Elixir programming language.


Via package.el

package.el is the built-in package manager in Emacs.

elixir-mode is available on the two major community maintained repositories - MELPA STABLE and MELPA.

You can install elixir-mode with the following command:

M-x package-install [RET] elixir-mode [RET]

or by adding this bit of Emacs Lisp code to your Emacs initialization file (.emacs or init.el):

(unless (package-installed-p 'elixir-mode)
  (package-install 'elixir-mode))

If the installation doesn't work try refreshing the package list:

M-x package-refresh-contents [RET]

Keep in mind that MELPA packages are built automatically from the master branch, meaning bugs might creep in there from time to time. Never-the-less, installing from MELPA is the recommended way of obtaining Elixir-Mode, as the master branch is normally quite stable and "stable" (tagged) builds are released somewhat infrequently.

With the most recent builds of Emacs, you can pin Elixir-Mode to always use MELPA Stable by adding this to your Emacs initialization:

(add-to-list 'package-pinned-packages '(elixir-mode . "melpa-stable") t)

Via el-get

el-get is another popular package manager for Emacs. If you're an el-get user just do M-x el-get-install [RET] elixir-mode [RET].


You can install Elixir-Mode manually by placing Elixir-Mode on your load-path and require ing it. Many people favour the folder ~/.emacs.d/vendor.

(add-to-list 'load-path "~/.emacs.d/vendor")
(require 'elixir-mode)


Interactive Commands

Command (For the M-x prompt.) Description
elixir-mode Switches to elixir-mode.
elixir-mode-opengithub Open the GitHub page for Elixir.
elixir-mode-open-elixir-home Go to Elixir README in the browser.
elixir-mode-open-docs-master Open the Elixir documentation for the master.
elixir-mode-open-docs-stable Open the Elixir documentation for the latest stable release.
elixir-mode-show-version Print version info for elixir-mode.


Any file that matches the glob *.ex[s] or *.elixir is automatically opened in elixir-mode, but you can change this functionality easily.

;; Highlights *.elixir2 as well
(add-to-list 'auto-mode-alist '("\\.elixir2\\'" . elixir-mode))


Keymaps can be added to the elixir-mode-map variable.


If you want to use ruby-end-mode for a more comfortable editing experience, you can add the following to your elixir-mode-hook:

(add-to-list 'elixir-mode-hook
             (defun auto-activate-ruby-end-mode-for-elixir-mode ()
               (set (make-variable-buffer-local 'ruby-end-expand-keywords-before-re)
               (set (make-variable-buffer-local 'ruby-end-check-statement-modifiers) nil)
               (ruby-end-mode +1)))

Also, if you use smartparens you can piggyback on some of its functionality for dealing with Ruby's do .. end blocks. A sample configuration would be:

(sp-with-modes '(elixir-mode)
  (sp-local-pair "fn" "end"
         :when '(("SPC" "RET"))
         :actions '(insert navigate))
  (sp-local-pair "do" "end"
         :when '(("SPC" "RET"))
         :post-handlers '(sp-ruby-def-post-handler)
         :actions '(insert navigate)))

Elixir Tooling Integration

If you looking for elixir tooling integration for Emacs, check: alchemist.el

You can use web-mode.el to edit elixir templates (eex files).


This mode is based on the Emacs mode by secondplanet.


Please read for guidelines on how to contribute to this project.


Copyright © 2011-2015 Samuel Tonini, Matt DeBoard, Andreas Fuchs, secondplanet and contributors.

Distributed under the GNU General Public License, version 3

Something went wrong with that request. Please try again.