Emacs で Crystal を書く

Posted on
qiita Emacs crystal

この記事はQiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。

みんな大好き Emacs で Crystal を書くための記事です。

Ruby ライクなシンタックスを持っているということもあって意外と ruby-mode でいけるのでは感はあります。実際、Crystal 独自機能を使わないようなコードを書く分には十分です。 ただ、型宣言とかマクロのような Crystal 独特のものを書こうとすると ruby-mode ではシンタックスハイライトが死にます。やはり Crystal に合わせたメジャーモードを使いたいところです。

ruby-mode でマクロを表示させた時の悲しい例: image

そして Crystal Wiki の Editor support で Emacs がハブられている!どういうことだ!

メジャーモード

jpellerin/emacs-crystal-mode

crystal-mode があります。が、このメジャーモードは今のとこ MELPA とかに登録されている気配が無いです… 1 el-get 使いなら以下の一文を init.el にでも書いときましょう。

(el-get-bundle jpellerin/emacs-crystal-mode)

マクロもちゃんとハイライトされてます。String interpolation がまだあやしいけど… image

自分は使ってないですが、flycheck 用のコードも入っているみたいです。

マイナーモード

マイナーモードに関しては、Ruby のものを流用することができます。 たとえば、

  • ruby-block
    • end に対応する行をハイライトしてくれる
  • ruby-end
    • def, if 等に対応した end を自動で挿入してくれる
(add-hook 'crystal-mode-hook 'ruby-block-mode)
(add-hook 'crystal-mode-hook 'ruby-end-mode)

そのほか

Projectfile は crystal-mode で開くよう設定しておきましょう。

(add-to-list 'auto-mode-alist '("Projectfile$" . crystal-mode))

おわりに

みんなで Crystal 書きましょう :exclamation:

REF


  1. Issue をたてたぞ Make crystal-mode available on MELPA · Issue #6 · jpellerin/emacs-crystal-mode ↩︎