Provides font-locking, indentation and navigation support for the Elixir programming language.
elixir-mode is available on the community maintained repository -
MELPA. Just run M-x package-install [RET] elixir-mode [RET]
inside your emacs and you're ready to go.
If you're not already using ELPA, check the emacswiki page to get familiar with it.
Clone this repository somewhere
$ cd ~/.emacs.d/plugins
$ git clone https://github.com/elixir-lang/emacs-elixir
Add the following in your .emacs file:
(add-to-list 'load-path "~/path/to/emacs-elixir/")
(require 'elixir-mode)
Command (For the M-x prompt.) |
Description |
---|---|
elixir-mode |
Switches to elixir-mode. |
elixir-mode-compile-file |
Compile Elixir files. Works fine on *.exs files, too, if needed. |
elixir-cos-mode |
Applies compile-on-save minor mode. |
elixir-mode-iex |
Launch iex inside Emacs. Use C-u
univesal-argument
to run iex with some additional arguments.
|
elixir-mode-eval-on-region |
Evaluates the Elixir code on the marked region.
This is bound to C-c ,r while in elixir-mode . |
elixir-mode-eval-on-current-line |
Evaluates the Elixir code on the current line.
This is bound to C-c ,c while in elixir-mode . |
elixir-mode-eval-on-current-buffer |
Evaluates the Elixir code in the current buffer.
This is bound to C-c ,b while in elixir-mode . |
elixir-mode-string-to-quoted-on-region |
Get the representation of the expression on the marked region.
This is bound to C-c ,a while in elixir-mode . |
elixir-mode-string-to-quoted-on-current-line |
Get the representation of the expression on the current line.
This is bound to C-c ,l while in 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-run-tests |
Run ERT tests for `elixir-mode`. |
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))
Custom variables for elixir-mode.
Variable | Default | Description |
---|---|---|
elixir-compiler-command (string) |
"elixirc" |
Command to compile Elixir code. |
elixir-iex-command (string) |
"iex" |
Command to start an interactive REPL in IEX . |
elixir-mode-highlight-operators (boolean) |
t |
Should operators be colored? (Currently not working properly.) |
elixir-mode-cygwin-paths (boolean) |
t |
Should Cygwin paths be used on Windows? |
elixir-mode-cygwin-prefix (string) |
"/cygdrive/C" |
The prefix for Cygwin-style paths. |
Hooks can be used to add functionality to elixir-mode. This example adds compile on save.
(defun elixir-mode-compile-on-save ()
"Elixir mode compile files on save."
(and (file-exists (buffer-file-name))
(file-exists (elixir-mode-compiled-file-name))
(elixir-cos-mode t)))
(add-hook 'elixir-mode-hook 'elixir-mode-compile-on-save)
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)
"\\(?:^\\|\\s-+\\)\\(?:do\\)")
(set (make-variable-buffer-local 'ruby-end-check-statement-modifiers) nil)
(ruby-end-mode +1)))
If you looking for integrated emacs mix support, see here: elixir-mix.el
This mode is based on the Emacs mode by secondplanet.
- Fork emacs-elixir
- Create a topic branch -
git checkout -b my_branch
- Push to your branch -
git push origin my_branch
- Send us a pull-request for your topic branch
- That's it!