2011/06/19 追記
マクロを高速化しました。
id:ohtorii:20110619:1308454833
秀丸エディタで動作するpsearchマクロです。
検索結果をポップアップ表示して選択した位置に移動できます。
psearchマクロのソース
/*psearch.mac 【これはなに】 検索結果をポップアップ表示します。 (xyzzyのpsearchに相当するマクロです。) 【動作】 選択文字列を検索してポップアップ表示します。 選択文字列がなければ単語選択してから検索します。 【オリジナルの作者】 秀丸エディタスレ Part30 178 :名無しさん@お腹いっぱい。 :2010/10/14(木) 02:08:50 ID:7v+i/hHB0 (2 回発言) 【改変 by ohtorii】 *ポップアップ表示の改良 ・結果に行番号を追加しました。 ・検索結果から重複する行を取り除きました。 ・検索開始した位置に矢印を表示するようにしました。 */ $old_searchbuffer = searchbuffer; #old_searchoption = searchoption; call Main; setsearch $old_searchbuffer, #old_searchoption; endmacro; Main: #old_lineno = lineno; #lineno[-1] = lineno; #column[-1] = column; #search_word = false; if(! selecting){ selectword; #search_word=true; } $word = gettext(seltopx, seltopy, selendx, selendy); if(0==strlen($word)){ return ; } disabledraw; gofiletop; if(#search_word){ searchdown2 $word, word; }else{ searchdown2 $word; } hilightfound 1; #cur_pos_index = -1; #prev_line_no = -1; while (result && #i < 30) { if(lineno != #prev_line_no){ if(lineno == #old_lineno){ #cur_pos_index = #i; $mark = "→"; }else{ $mark = " "; } call GetLineStr; $line_str = $$return; $m[#i] = $mark + str(lineno) + ": " + $line_str; #lineno[#i] = lineno; #column[#i] = column; #i = #i + 1; } #prev_line_no = lineno; finddown; } movetolineno #column[-1] + 1, #lineno[-1]; enabledraw; menuarray $m, #i; if (result){ if(#cur_pos_index != (result-1)){ #r = result-1; disabledraw; movetolineno #column[#r] + 1, #lineno[#r]; //カーソルを画面中心にする //enabledraw y - (windowheight/2); } } return ; GetLineStr: if(1){ //タブは空白文字に変換してから返す $$str=""; golinetop2; while(1){ if(unicode==0x09){ $$str = $$str + " "; }else if((unicode==0x0a) || (unicode==0x0d) || (unicode==-1)){ return $$str; }else{ $$str = $$str + unichar(unicode); } right; if(! result){ return $$str; } } }else{ escape; golinetop2; beginsel; golineend2; endsel; return gettext2(seltopcolumn, seltoplineno, selendcolumn, selendlineno); }