すでにアップしているrde_filegrep.rbの結果を、コンソールウィンドウではなく、新しいコードウィンドウに出力したのち、結果のコードウィンドウにて、表示させたい処にカーソルを移動させてこのマクロを実行すると、該当するファイルを新しいコードウィンドウに表示し、Grepヒットした行数にカーソルを持って行ってくれます。
rde_filegrep.rbの結果をコンソールウィンドウに出力すれば、検索結果をダブルクリックするだけで該当するファイルを開いてくれるんですが・・・・
個人的にライセンスを持っているEmEditorライクな仕様に近づけたかったので、このマクロを作成しました。
エディタウィンドウはコンソールウィンドウよりも広いですし、出力結果を検索するにしても使いやすいです。
ソースコード
#!/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