今回のモダンなEmacsを求めてはRubyの開発環境について。
rbenv.el
rbenvへの実行パスを通してくれたりする。
package-install rbenv
で入る。
(require 'rbenv)
(global-rbenv-mode)
rbenvを入れた場所の設定も必要。
brewで入れたのならbrew info rbenv
で場所がわかる。
echo $RBENV_ROOT
でもよい。
(setq rbenv-installation-dir "/usr/local/var/rbenv")
追加しておく。
electric-pair-mode
{
と打つと}
、"
と打つと"
のように対応する文字を自動で入力する。
Emacs 24からはデフォルトで入っている。有効にする。
(electric-pair-mode t)
ブロック引数の|
も自動で閉じてほしいので次のような設定を追加する
(add-to-list 'electric-pair-pairs '(?| . ?|))
electric-indent-mode
括弧を閉じたときなどいい感じでインデントしてくれる。 確認したところ既に有効になっていた。 特に設定していない。
有効になっているモードの確認方法
以下の式を評価すると確認できる。
とじ括弧のところでC-x e
しよう。
(describe-mode)
electric-layout-mode
括弧を入力したときいい感じで改行を挿入してくれる。
ただし、以下のような設定が必要に見えた。
このモードt
にしていてelectric-layout-rules
設定していない人は何に使っているんだろう。
(add-to-list 'electric-layout-rules '(?{ . after))
ruby-block
end
に対応する宣言の位置をハイライトしてくれる。
ハイライトの仕方をruby-block-hilight-toggle
で設定できる。
(package-install ruby-block)
(require 'ruby-block)
(setq ruby-block-highlight-toggle t)
ruby-end
do
やclass
やdef
などに反応して自動でendを入力する。
package.el
で入る。
(package-install ruby-end)
(require 'ruby-end)
inf-ruby
M-x inf-ruby
でirb/pryが起動。
Pryで使う設定はるびきちさんのブログを参考に設定する
(package-install inf-ruby)
(require 'inf-ruby)
(setq inf-ruby-default-implementation "pry")
(setq inf-ruby-eval-binding "Pry.toplevel_binding")
(add-hook 'inf-ruby-mode-hook 'ansi-color-for-comint-mode-on)
quickrun
SmartCompileとどっちがいいんだろう。
M-x package-install quickrun
する。helmに出ていて欲しいのでdefault-sourcesに追加しておく。
(custom-set-variables
'(helm-mini-default-sources '(helm-source-buffers-list
helm-source-recentf
helm-source-buffer-not-found
helm-quickrun-source)))
Ruby以外も実行できるのがよさそう。
タグジャンプ
安定のtmm1さんプロダクト、ripper-tags
を使う。
gem install
したときに生成してくれるgem-ripper-tags
も合わせていれる。
プロジェクト内のファイルはguardを使おうと思う。
~/.guard.rb
を用意しておくとすべてのプロジェクトで勝手に読みこまれる。
詳しくはShared configurations · guard/guard Wikiを読んでほしい。
$ gem install guard guard-shell
これでguardは入った。次のような設定でプロジェクト内のファイルを監視する。
~/.guard.rb
:
guard :shell do
watch(%r{^(?:app|lib)/.+\.rb$}) { `ripper-tags -e -R -f TAGS` }
end
プロジェクトにGuardfileが無いとおこられないように~/.Guardfile
も追加しておく。
$ touch ~/.Guardfile
あとは$ guard
で起動すれば、自動でTAGS
が更新される。
rcodetools
$ gem install rcodetools
どこにrcodetoolsが保存されているのか調べてinit-loaderが読める場所に置く
$ gem which ruby_toggle_file
$ cd /usr/local/var/rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rcodetools-0.8.5.0
$ cp rcodetools.el ~/.emacs.d/inits/01_rcodetools.el
とりあえず便利そうなxmpを呼べるだけの最小限の設定をする。
(require 'rcodetools)
(define-key ruby-mode-map (kbd "C-c x") 'xmp)
もっと便利に使いたくなったらまた検索する。
robe
Dependenciesに書かれているpry/pry-docを入れる。
$ gem install pry pry-doc
packageをいれる
package-install robe
最小限の設定をする
(require 'robe)
(add-hook 'ruby-mode-hook 'robe-mode)
M-x robe
まで入れると候補がいくつかでる。
使い方はあとで覚える。
rbenv.elを入れていない場合、rbenvで入れたrubyに入れたpryなどが使えず、エラーが発生する恐れがある。
あとGemfileにpry
/pry-doc
が入っていないときは足しておくこと。
robeの補完を便利に使うためにはhelm-robeもいれる
設定は書かれている通りなのだが
package-install helm-robe
あとは
(require 'helm-robe)
(custom-set-variables '(robe-completing-read-func 'helm-robe-completing-read))
試してみたけどrobe
をまず最初に入れるべきだと思った。すごく便利。
C-M-i
すると補完が動く。C-M-d
で定義が見れる。
まとめ
Emacsは副作用が強い薬みたいなもので、鎮痛剤依存症みたいに処方薬を服用してるつもりが、いつの間にか依存症になったりします。 新しく導入するのは1日1パッケージのみにとどめて30日毎日違うパッケージを服用するとよさそう。 わたしはRubyのためのEmacsの設定を調べるためにRubyを書くのを3日サボった。 用法用量を守って楽しいEmacsライフを。