白井です。

 スタックトレースからファイル名と行番号を拾って、そのファイルを開ける
emacs-lisp を作ってみました。 shell-mode の拡張 ruby-shell-mode として組ん
であります。

 最初 rubydb3x を使えば直接エラーの起こった箇所を開けるのかな、と色々いじ
ってみたのですが断念してしまいました。


使い方:
(1) M-x shell
(2) M-x ruby-shell-mode
(3) 何か ruby スクリプトを動かす
(4) エラーが出た!
(5) スタックトレース行の上で C-c C-r
    するとその行へ飛ぶ。

# 誰か obaq-mode を書いてほしい…
#
http://www.brain-tokyo.jp/~research/koutetu/manual/obaq/shell/shell2.htmlhttp://www.brain-tokyo.jp/~research/koutetu/
-- 
shirai / p1jp.com

Shirai,Kaoru
  PlusOne Co.,Ltd


(defun ruby-shell-open-refered-file (filename linenum)
  (find-file-other-window filename)
  ;; for XEmacs:
  ;;   (find-file-other-frame filename)
  (goto-line linenum)
)

(defun ruby-shell-refer-file ()
  (interactive)
  (save-excursion
    (beginning-of-line)
    (if
        (looking-at "\\(\\|.+ \\)\\([^ :\n]*\\):\\([0-9]*\\)")
        (progn
          (let '(filename 'linenum)
            (setq filename (match-string 2))
            (setq linenum (string-to-int (match-string 3)) )
            (message "Refered: %s (line %s)" filename linenum)
            (ruby-shell-open-refered-file filename linenum)
            )
          )
      (message "Not matched to stacktrace pattern.")
      )
    )
  )

(define-derived-mode ruby-shell-mode shell-mode "Ruby Shell"
  "Shell mode extension for ruby interpreter."
  )

(define-key ruby-shell-mode-map "\C-c\C-r" 'ruby-shell-refer-file)