Provides font-locking, indentation and navigation support for the Elixir programming language.
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:
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)Command (For the M-x prompt.) |
Description |
|---|---|
elixir-mode |
Switches to elixir-mode. |
elixir-mode-open-github |
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.
Smartparens has direct support for Elixir.
Alternatively, if you want to use ruby-end-mode, 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)
"\\(?:^\\|\\s-+\\)\\(?:do\\)")
(set (make-variable-buffer-local 'ruby-end-check-statement-modifiers) nil)
(ruby-end-mode +1)))This package is tested only with a single version of OTP and 3 versions of Elixir. Please, always report versions (Emacs, Elixir and Erlang/OTP) when raising issues.
If you looking for elixir tooling integration for Emacs, check: alchemist.el
You can use web-mode.el to edit elixir templates (eex files).
mix.el provides a minor mode for integration with Mix, a build tool that ships with Elixir.
M-x elixir-format;; Create a buffer-local hook to run elixir-format on save, only when we enable elixir-mode.
(add-hook 'elixir-mode-hook
(lambda () (add-hook 'before-save-hook 'elixir-format nil t)))To use a .formatter.exs you can either set elixir-format-arguments globally to a path like this:
(setq elixir-format-arguments (list "--dot-formatter" "/path/to/.formatter.exs"))or you set elixir-format-arguments in a hook like this:
(add-hook 'elixir-format-hook (lambda ()
(if (projectile-project-p)
(setq elixir-format-arguments
(list "--dot-formatter"
(concat (locate-dominating-file buffer-file-name ".formatter.exs") ".formatter.exs")))
(setq elixir-format-arguments nil))))In this example we use Projectile to determine if we are in a project and then set elixir-format-arguments accordingly.
Please note that this code snippet may cause unhappiness if there is no .formatter.exs file available.
This mode is based on the Emacs mode by secondplanet.
Please read CONTRIBUTING.md for guidelines on how to contribute to this project.
Copyright © 2011-2017 Samuel Tonini, Matt DeBoard, Andreas Fuchs, secondplanet and contributors.
Distributed under the GNU General Public License, version 3