Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

Ruby開発環境「RDE」向けのRubyマクロ:Grepマクロ結果から該当ファイルの該当行へジャンプ

すでにアップしているrde_filegrep.rbの結果を、コンソールウィンドウではなく、新しいコードウィンドウに出力したのち、結果のコードウィンドウにて、表示させたい処にカーソルを移動させてこのマクロを実行すると、該当するファイルを新しいコードウィンドウに表示し、Grepヒットした行数にカーソルを持って行ってくれます。

rde_filegrep.rbの結果をコンソールウィンドウに出力すれば、検索結果をダブルクリックするだけで該当するファイルを開いてくれるんですが・・・・
個人的にライセンスを持っているEmEditorライクな仕様に近づけたかったので、このマクロを作成しました。
エディタウィンドウはコンソールウィンドウよりも広いですし、出力結果を検索するにしても使いやすいです。

RDE側の設定

 ・Rubyスクリプト   : チェック
 ・実行前に引数に有力 : チェックしない
 ・対象        : 現在のファイル
 ・出力        : コンソールウィンドウ

ソースコード

#!/usr/bin/ruby
#==============================================================
# File name		:	rde_filegrepopen.rb
# Explanation
#		rde_filegre.rbで出力された結果を読み込んで、対象のファイルを開き、対象の行数にカーソルを移動させる
#		
# Argument
#		IN
#				ARGV[0]:
#				ARGV[1]:
#				ARGV[2]:
#		OUT
#				Nothing
# Return
#
# Author			:
#
# Memo
#
#==============================================================

#パラメータは無し

#エディタウィンドウのカーソル位置の行を読み取る

#:記号で行を分割
#最初の情報が開くファイル名
#二つ目が行数

require "win32ole"

rde = WIN32OLE.new("RDE.Main")

#カーソル位置(行数)を取得し、カーソル位置の文字列を取り出す
row = rde.ActiveCodeWindow.Row
line = rde.ActiveCodeWindow.Lines(row)

#カーソル位置文字列を「: 」で分割して配列に収める。
param = line.split(': ')
param[0] = param[0].gsub(/\//,'\\')

#print "param[0] = #{param[0]}"

#新しくコードウィンドウを開く
rde.NewCodeWindow(param[0])

#指定行数へキャレットを移動
rde.ActiveCodeWindow.Row = param[1].to_i - 1