ctags に Elixir を追加する
最近、Atom エディタを使っているが、シンボルの定義場所に移動するための Go to Declaration
コマンドを動作させるためには ctags でインデックスしておく必要がある。
ただ、2015年9月の現時点では Elixir がサポートされていないようなので、自分で追加してやる必要がある。
% ctags --version
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Mar 16 2015, 23:48:18
...
Optional compiled features: +wildcards, +regex
ctags はコマンドラインオプションで新しい言語を定義できる。毎回指定するのが面倒な場合は、
$HOME/.ctags
からオプションを読み込んでくれるようだ。
とりあえず、defmodule
によるモジュール定義を読み込めるようにしてみよう。
--langdef=Elixir
--langmap=Elixir:.ex.exs
--regex-elixir=/^[ \t]*defmodule[ \t]+([a-zA-Z0-9_.]+)/\1/m,modules/
ctags
を実行して、生成された tags ファイルを確認する。
% ctags lib/elixir/lib/task.ex
% cat tags
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
...
Task lib/elixir/lib/task.ex /^defmodule Task do$/;" m
TaskFinder lib/elixir/lib/task.ex /^ defmodule TaskFinder do$/;" m
想定通り、モジュール定義がインデックスできているようだ。あとは 必要なだけ --regex-elixir
オプションを追加していけばいい。
参考までに、関数定義を追加したものをここに置いておく。