refeとかriをanythingで
(defvar ri-program "fri") ;;friを使わないなら ;;(setq ri-program "ri") (defvar refe-program "~/bin/refe.sh") (defvar ruby-all-methods nil) (defvar my-ruby-reference-last-word "") (defun read-ruby-document (document com) "Open each ruby's ruby-document on other window" (let ((buf "*ruby document*")) (if (equal com "") (shell-command (concat document " -l") buf) (shell-command (concat document " " com) buf)) (save-excursion (set-buffer buf) (ansi-color-apply-on-region (point-min) (point-max))))) (defun get-ruby-method-reference () (let ((buf "*ruby document*")) (progn (read-ruby-document ri-program "") (setq ruby-all-methods (buffer->alist buf '( "(\"" "\" \"" "\")"))) (kill-buffer buf))) ruby-all-methods) (defun buffer->alist (src-buffer &optional padding) ;;"a\nb\nc" => (a b c) (let* ((padding (if padding padding '( "(" " " ")"))) (beg-paren (car padding)) (joiner (cadr padding)) (end-paren (caddr padding))) (save-excursion (set-buffer src-buffer) (goto-char (point-min)) (insert beg-paren) (while (search-forward "\n" nil t) (replace-match joiner nil t)) (goto-char (point-max)) (insert end-paren) (goto-char (point-min)) (read (current-buffer))))) (defun my-ruby-reference (method &optional prog chr) (let ((chr (if chr chr ".")) (prog (if prog prog ri-program))) (let ((method (replace-regexp-in-string "#" chr method))) (setq my-ruby-reference-last-word method) (read-ruby-document prog method)))) (setq anything-c-source-ruby-method-reference '((name . "Ruby Mehtod") (candidates . ruby-all-methods) (action . (("RI" . (lambda (c) (my-ruby-reference c))) ("Refe". (lambda (c) (my-ruby-reference c refe-program " "))))) )) (defun anything-ruby-method-reference () (interactive) (unless ruby-all-methods (get-ruby-method-reference)) (let ((anything-sources (list anything-c-source-ruby-method-reference)) (anything-initial-input my-ruby-reference-last-word)) (anything)))
M-x anything-ruby-method-referenceでanything候補を選択しながらriとかが使える。
でも、rcodetoolsをインストールした方が便利だと思います><*1
*1:今回作ったようなリファレンス用の機能も入っているし、テストの補助とか補完とか他にも色々便利な機能がはいってます>rocdetools