2014/12/5 (金) 00:29:43 返信 削除
[588] 複数の単語で単語検索(色分け付)するマクロV2

( 投稿[563]の改良版です )

最近のサクラエディタは、検索する際に「単語単位で探す」をオンにすると、
複数の単語を検索できます。しかも5色までの色分けまでしてくれます。

この便利な機能を、手軽に使うためのマクロを書いてみました。
Ctrl+ダブルクリックに割り当てると便利です。
単語を追加するたびに、新しい色をつけて次々とハイライトしていけます。
空行や行末など単語がない場所で起動すると、ハイライトをクリアします。

SearchWordsPlus.js
-----------------------------------
// *************************************************
// SearchWordsPlus.js (Ver.2)
//
// 環境  : sakura2.0.6.0以降専用
// 機能  : 複数の単語で単語検索を行う
// 使用例: Ctrl+ダブルクリック に割り当てする。
//         ダブルクリックに[Macro/投稿/116]の割り当て。
//         設定>タイプ別設定>カラー にて
//         検索文字列〜5 の色を設定しておくこと。
// *************************************************

var strNewWord ;
var strLastWords ; 
var strSearchWords ; 

// -- 単語を選択 --
//Editor.SelectWord() ; 
   //<- マクロを Ctrl+ダブルクリックにアサインした場合、
   //  「Ctrl+左クリック」の時点で既に単語選択されるため、
   //   ここはコメントアウトしてください。

// -- 選択単語を追加する --
strNewWord  = Editor.GetSelectedString(0);

if ( strNewWord == "" ){ 
  // -- 単語が存在しない場所で起動した場合はクリアする --
  Editor.SearchClearMark(0);
  Editor.SetCookie( "window", "SearchWords","");
} else {
  // -- 単語を"SearchWords"というCookieに保存し、複数単語検索する --
  strLastWords = Editor.GetCookie( "window", "SearchWords", "" );
  strSearchWords = strLastWords + " " + strNewWord;
  Editor.Left();
  Editor.SearchNext( strSearchWords, 2051 ); 
     //<- 2051 = 0x01+0x02+0x800 (単語単位+英大小区別+履歴非登録)
  Editor.SetCookie( "window", "SearchWords", strSearchWords  );
}
-----------------------------------
検索条件はプログラマ向けを想定しています。

Ver1は、前の検索文字列を取得するためにクリップボードを使っている点が難点でした。
Ver2では、サクラエディタ2.0.6.0以降の機能であるSetCookieを使用しています。

次のマクロと共存が可能です。
・[Macro/投稿/116] ダブルクリックして選択範囲と同じ単語をハイライト
   http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F116
-----------------------------------
S_SelectWord(0);
S_SearchClearMark(0);
-----------------------------------

私は、
・ダブルクリックを、上の(投稿/116)の1単語の単語検索
・Ctrl+ダブルクリックを、今回の複数単語の単語検索
というようにキー割り当てを設定し、併用して使っています。
SNK
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81