Elixir
elixir-mode -- Emacs major mode forDEPRECATED
you may get new emacs-elixir
Installation
Simply add to your load path and require the mode to install.
In your shell...
% git clone git://github.com/secondplanet/elixir-mode ~/.emacs.d/elixir-mode
% $EDITOR ~/.emacs
In the editor...
(add-to-list 'load-path "~/.emacs.d/elixir-mode")
(require 'elixir-mode)
Save and reload with M-x load-file
~/.emacs
.
Usage
Any file that matches the glob *.ex[s]
is automatically opened in
Elixir mode, but you can change this functionality easily.
;; Highlights *.elixir as well
(add-to-list 'auto-mode-alist '("\\.elixir\\'" . elixir-mode))
Commands
(For the M-x
prompt.)
elixir-mode
Switches to elixir-mode.
elixir-cos-mode
Applies compile-on-save minor mode.
elixir-mode-iex
Launch IEX
inside Emacs.(buggy...)
elixir-mode-opengithub
Open the GitHub page for Elixir.
elixir-mode-compile-file
Compile Elixir files. Works fine on exs
files, too, if needed.
elixir-mode-open-elixir-home
Go to Elixir README in the browser.
elixir-mode-show-version
Print version info for elixir-mode.
elixir-mode-indent-line
Indent the current line.
Hooks
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)
Configuration
Custom variables for elixir-mode.
elixir-compiler-command (string)
"elixirc"
Default: Command to compile Elixir code.
elixir-iex-command (string)
"iex"
Default: Command to start an interactive REPL in IEX
.
elixir-mode-highlight-operators (boolean)
t
Default: Should operators be colored? (Currently not working properly.)
elixir-mode-cygwin-paths (boolean)
t
Default: Should Cygwin paths be used on Windows?
elixir-mode-cygwin-prefix (string)
"/cygdrive/C"
Default: The prefix for Cygwin-style paths.
elixir-basic-offset (integer)
Default: default-tab-width (8)
indent basic offset
elixir-key-label-offset (integer)
Default: 0
for after, elsif, else, catch, rescue offset
elixir-match-label-offset (integer)
Default: 2
for -> offset in cond, case
Keymapping
Keymaps can be added to the elixir-mode-map
variable.
There are no keyboard shortcuts included by default.
Bugs
This is still very alpha software; there are probably several bugs. Right now the indentation implementation needs some work, and the operator font-locking doesn't appear to be working correctly.
Notes
This is my first Emacs mode, so please excuse some of the messy bits in the implementation. To help me out I had a look at and borrowed a bit of code from io-mode, ruby-mode, and coffee-mode.