すごい.emacs
この動画の人の.emacs.
これ見た時から, すごいなあ, どんな.emacsなんだろうと気になってたんだけど, 公開してくれたみたい.
ここね.
注意書きでは, 修正しないとそのままでは動かないだろうってことらしい.
でかくてまだ軽くしか見ないんだけど, Ruby関係でこれはすごいと思ったのが3つ(まだまだありそうだけど, 理解が追い付かない).
(add-to-list 'align-rules-list '(ruby-comma-delimiter (regexp . ",\\(\\s-*\\)[^# \t\n]") (repeat . t) (modes . '(ruby-mode)))) (add-to-list 'align-rules-list '(ruby-hash-literal (regexp . "\\(\\s-*\\)=>\\s-*[^# \t\n]") (repeat . t) (modes . '(ruby-mode))))
見ての通り, こいつは, alignの設定.
カンマとハッシュについてみたい.
あんまり試してない.
先に(require 'align)しておく必要がある.
こいつが一番ビビった.
ruby-electric.elをロードパスのある場所に配置し, 先に(require 'ruby-electric)しておく必要がある.
;; Hide-show (require 'hideshow) (add-to-list 'hs-special-modes-alist (list 'ruby-mode (concat "\\(^\\s-*" ruby-electric-simple-keywords-re "\\|{\\|\\[\\)") "end\\|\\]\\|}" "#" 'ruby-forward-sexp nil))
そして, このマイナーモードruby-electric-modeを起動すると, 次のような補完入力ができるようになる.
forとまで入力して, スペースを入れるとendを補完してくれる.
もちろん, whileでもclassでもunlessでもOK.
ruby-electric-modeは, brackets.elみたいに括弧とかの補完をするモードみたいだね(開始括弧を入力すると閉括弧も挿入してくれるモード).
だから, brackets.elとはちょっと相性が良くない.
追記(0104)
勘違い炸裂.
whileとかでendを補完してくれるのは, 単純にruby-electric-modeの機能.
この設定は, hideshow. つまり, ruby-modeでhs-minor-modeを使えるようにするもの.
hs-minor-modeがオンの状態で, classとかのところにカーソルを置いて, C-c @ C-hとかすると対応するendまでが隠れたりする.
これはこれでかなり便利そう.
そして最後.
こいつはテスト用の関数の補完入力なのかなあ. 詳細は分かんない.
;; Snippets (snippet-with-abbrev-table 'ruby-mode-abbrev-table ("inj" . "$>inject($${[]}) do |$${memo}, $${item}|\n$>$.\nend$>") ("def" . "$>def $${method}($${*args})\n$>$.\nend$>") ("dt" . "$>def test_$${method}\n$>$.\nend$>"))
injまで入力してタブを押すと, inject([]) do |memo, item| ...と補完してくれる.
下のdef, dtも同様.
どうせだから, ruby-modeでは, brackets.elをきってruby-electric-modeを最初から起動するようにしといた.
ちょっと他の設定も混ってて綺麗じゃないけど, こんなの書いとけば, OK.
;; 括弧とかの自動挿入 (add-hook 'ruby-mode-hook '(lambda() (progn ;; comment-columnの設定 (setq comment-column 39) ;; camelCase-mode (camelCase-mode t) ;; ruby-electric-mode (ruby-electric-mode t) ;; ri-emacsの設定 (define-key ruby-mode-map [f1] 'ri) (define-key ruby-mode-map "\M-\C-i" 'ri-ruby-complete-symbol) (define-key ruby-mode-map [f4] 'ri-ruby-show-args) ;; C-m で 改行 + インデント (define-key ruby-mode-map "\C-m" 'ruby-reindent-then-newline-and-indent) )))
見る人が見れば, もっと面白い設定がいっぱいあると思うよ.
自分ではまだまだ理解できません.
と, いうことで一度ダウンロードしてみて中を見てみることをオススメするよ.
設定は, 複数ファイルに分割されてて見やすいし.