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:
(add-to-list 'package-pinned-packages '(elixir-mode . "melpa-stable") t)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)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-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-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)))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)))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 CONTRIBUTING.md for guidelines on how to contribute to this project.