みんな大好き Ruby だお.
(use-package ruby-mode
:commands ruby-mode
:mode (("\\.rb$" . ruby-mode)
("Capfile$" . ruby-mode)
("Gemfile$" . ruby-mode)
("[Rr]akefile$" . ruby-mode))
:interpreter "ruby")
Better Ruby Mode.
参考:enhanced-ruby-mode の概説 - Qiita
; must be added after any path containing old ruby-mode
;;(use-package enh-ruby-mode)
;;(autoload 'enh-ruby-mode "enh-ruby-mode" "Major mode for ruby files" t)
;;(add-to-list 'auto-mode-alist '("\\.rb$" . enh-ruby-mode))
;;(add-to-list 'auto-mode-alist '("\\.rb$" . enh-ruby-mode))
;;(add-to-list 'auto-mode-alist '("Capfile$" . enh-ruby-mode))
;;(add-to-list 'auto-mode-alist '("Gemfile$" . enh-ruby-mode))
;;(add-to-list 'auto-mode-alist '("[Rr]akefile$" . enh-ruby-mode))
;;(add-to-list 'load-path "~/.emacs.d/elips/el-get/enh-ruby-mode")
;;(add-to-list 'interpreter-mode-alist '("ruby" enh-ruby-mode))
;;(remove-hook 'enh-ruby-mode-hook 'erm-define-faces)
Ruby 用の補完をする. 補完は auto-complete という有名な elisp がある. もっと賢いのがオムニ補完と呼ばれるもの. これは文法を解析して補完してくれる.
el-get 経由で robe-mode を入れる.
また, pry というものも必要みたい. 詳しくは github の README 参照で.
gem install pry pry-doc
設定を追記.
(use-package robe
:init
(add-hook 'ruby-mode-hook 'robe-mode)
:config
(setq robe-highlight-capf-candidates nil))
electric editing commands for ruby files
かっこや do end などの対応関係を自動で補正してくれる -> smartparen-mode に置き換えるので廃止。
;;(use-package ruby-electric
;; :disabled t
;; :init
;; (add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode t)))
;; :config
;; (setq ruby-electric-expand-delimiters-list nil)
;;)
かっこや do end などの対応関係を自動でハイライトしてくれる
(use-package ruby-block
:commands ruby-block-mode
:init
(add-hook 'ruby-mode-hook '(lambda () (ruby-block-mode t)))
:config
(setq ruby-block-highlight-toggle t))
Ruby 用リファクタリングツール
(use-package ruby-refactor
:config
(add-hook 'ruby-mode-hook '(lambda () (ruby-refactor-mode-launch))))
rdefs はソースコードの class や module, def といった宣言のラインを引っ張り出してくれるツール.
gem install rdefs
helm I/F を経由して, Emacs から利用することができる.
.emacs の設定は以下.
(require 'helm)
(require 'helm-rdefs)
(add-hook 'ruby-mode-hook
(lambda ()
(define-key ruby-mode-map (kbd "C-c @") 'helm-rdefs)))
Emacs のスニペット挿入機能といえば, yasnippet だが, その Ruby 用テンプレート群をいれる.
ここからダウンロードして, yasnippet のスニペット一覧に突っ込む!
いちおう, yasnippets の設定も載せておく. ここでは, ~/.emacs.d/snippets にいれた.
(require 'yasnippet)
(yas/load-directory "~/.emacs.d/snippets")
(yas-global-mode 1)
;; 既存スニペットを挿入する
(define-key yas-minor-mode-map (kbd "C-x i i") 'yas-insert-snippet)
;; 新規スニペットを作成するバッファを用意する
(define-key yas-minor-mode-map (kbd "C-x i n") 'yas-new-snippet)
;; 既存スニペットを閲覧・編集する
(define-key yas-minor-mode-map (kbd "C-x i v") 'yas-visit-snippet-file)
標準ライブラリのデバッカ. ステップ実行できる. elisp は ruby のソースに梱包されている.
(use-package rubydb :commands rubydb)
emacs から irb を操作
(use-package inf-ruby
:commands inf-ruby
:init
(add-hook 'ruby-mode-hook 'inf-ruby-minor-mode)
)
rspec 自動実行.
;; 動かん!
;; (use-package autotest)
rspec 拡張
(use-package rspec-mode
:defer 20
:commands rspec-mode
:config
(add-hook 'ruby-mode-hook 'rspec-mode)
;; (rspec-install-snippets)
:config
(custom-set-variables '(rspec-use-rake-flag nil))
(custom-set-faces))
A minitest mode for emacs
rake とか bundle とか、本格的にプロジェクト管理していないと 利用できない. quickrun のほうが良さげ.
(use-package minitest
:init
(add-hook 'ruby-mode-hook 'minitest-mode))
;; :config
;; (minitest-install-snippets))
inf-ruby よりも高機能らしい REPL.
(require 'pry)
;; optional suggestions
(global-set-key [S-f9] 'pry-intercept)
(global-set-key [f9] 'pry-intercept-rerun)
-> programming に移動.
checkstyle のようなスタイルの解析
gem install rubocop
(use-package rubocop
:init
(add-hook 'ruby-mode-hook 'rubocop-mode))
Ruby on rails 用.
(use-package projectile-rails
:disabled t
:commands (projectile-rails-on)
:init
(add-hook 'projectile-mode-hook 'projectile-rails-on))