elixir-modeをハックしてみた

elixir向けのemacs メジャーモードとしてはhttps://github.com/secondplanet/elixir-modeがあるのだが、0.4.0-dev以降のelixirには対応していない。elixir側も結構キーワードが変わっているし、作者氏も更新するのをやめてしまったみたいだし、インデントコマンドが無限ループするなど微妙なのだ。
ということで、forkしてクイックハックしてみた。
GitHub - k1complete/elixir-mode: Emacs major mode for Elixir
においているので適当にgit cloneしてみてください。

変更内容

ハイライトのキーワード追加

defmacro, defmodule, defrecordなどを追加。

制御変数を追加
elixir-basic-offset 8 通常のインデントの単位
elixir-key-label-offset 2 caseでのmatchラベルやelseラベルのインデント単位。0だと、インデント無し
バグ修正

インデント動作で時々無限ループするバグの修正

インデントルール改善

match:などのインデントに対応

使い方

.emacs.d/elixir-mode/にelixir-mode.elをおいて、

(add-to-list 'load-path "~/.emacs.d/elixir-mode")
(require 'elixir-mode)
(setq elixir-basic-offset default-tab-width) ;; 適当に8とか4とか
(setq elixir-key-label-offset 2) ;; match:やelse:を変更しないなら0でよい

.emacsへ追加する。

今後

まだsecondplanet氏のコードを全部理解している訳でもないし、メジャーモード作るのもはじめてなのでw 勉強しないとw