検索文字列の強調表示No.09818
ひら さん 01/09/18 18:01
 
初めて投稿させていただきます。

秀丸エディタで開いてるテキストに対して文字列検索したとき、
該当する文字列を全て強調表示してくれるような
マクロor機能はありませんでしょうか?

よろしくお願いします

[ ]
RE:09818 検索文字列の強調表示No.09819
ひろ さん 01/09/18 19:13
 
 ひらさん今日は、ひろです。
> 秀丸エディタで開いてるテキストに対して文字列検索したとき、
> 該当する文字列を全て強調表示してくれるような
> マクロor機能はありませんでしょうか?
 マクロで可能です。
 ##ライブラリにあると思っていたんだけどなあ〜。
//--------------------- highlight search string macro ---------------------
//検索文字列を「特に強調表示2」に加える
//ただし強調表示定義 file の指定が無いのに、強調表示の設定自体はしてある場合、
//検索文字列の強調だけされ、それ以外の設定した有った強調表示は OFF になる。
//grep の結果や、標準出力の結果の場合は、上手くいかない→Ver.3.09 では改善可能
main:
  if(!hilightstate)config "y+";
  call GetLightChar;
  $$hilightChar = $$return;
  if(hilighttitle == ""){
    call HilightTitle;
    if($$return == ""){
      call MakeHilight "", $$hilightChar;
    }
    else call MakeHilight $$return, $$hilightChar;
  }
  else if(hilighttitle == "hilight.tmp"){
    call HilightTitle;
    if($$return == "")call MakeHilight "", $$hilightChar;
    else call MakeHilight $$return, $$hilightChar;
  }
  else call MakeHilight hilighttitle, $$hilightChar;
  loadhilight "hilight.tmp",0;
  endmacro;

MakeHilight:
  ##main = hidemaruhandle(0);
  openfile "/h " + hidemarudir + "\\" + $$1;
  showwindow 0;
  gofileend;
  insert $$2 + "\n";
  saveas hidemarudir + "\\hilight.tmp",sjis;
  ##highlight = hidemaruhandle(0);
  setactivehidemaru ##main;
  closehidemaru ##highlight;
  return;

GetLightChar:
  ##option = 0;
  $$string = searchbuffer;
  if(searchoption&1)##option = ##option|32;
  if(searchoption&2 == 0)##option = ##option|8;
  if(searchoption&16)##option = ##option|16;
  if(searchoption&2 == 0 && searchoption&16 == 0){
    call TOUPPER $$string;
    $$string = $$return;
  }
  ##option = ##option|67;
  return str(##option) + "," + $$string;

GetType://「C言語ソースファイル」等と file type が決まっていない場合は "" を返

  openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\." + $$1;
  if(result){
    $$type=getregstr("");
    closereg;
  }
  else $$type="";
  return $$type;

HilightTitle:
  call GetExtension basename;
  call GetType $$return;
  if($$return == "")
    openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Default";
  else openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Config\\"
    + $$return;
  $$HilightTitle = getregstr("HilightTitle");
  closereg;
  return $$HilightTitle;

TOUPPER://小文字を大文字に変換 (半角文字のみ)
  ##char=0x61;
  while(##char<=0x7A){
    call ChangeCharacter $$1,char(##char),char(##char-0x20);
    $$1=$$return;
    ##char=##char+1;
  }return $$1;

ChangeCharacter://buff 中の文字列を置換
//$$1:buff
//$$2:検索文字列
//$$3:置換文字列
  ##change_char=strlen($$2);
  $$string = "";
  while(1){
    ##long = strlen($$1);
    ##number = strstr($$1, $$2);
    if(##number == -1)break;
    else{
      $$string = $$string + leftstr($$1, ##number) + $$3;
      $$1 = rightstr($$1, ##long - ##number - ##change_char);
    }
  }
  return $$string + $$1;

GetExtension://拡張子を取得
//$$1:basename, basename2
  ##extension=strstr($$1,".");
  if(##extension==-1)return ".";
  else if(##extension==0)return "";
  while(1){
    ##extension=strlen($$1)-##extension-1;
    $$1=rightstr($$1,##extension);
    ##extension=strstr($$1,".");
    if(##extension==-1)break;
  }return $$1;

[ ]
RE:09819 検索文字列の強調表示No.09820
ひろ さん 01/09/18 19:38
 
 ひらさん今日は、ひろです。
 自己レスです。
>   openfile "/h " + hidemarudir + "\\" + $$1;
この部分は、
  if($$1 == "")openfile "/h ";
  else openfile "/h " + hidemarudir + "\\" + $$1,sjis;
とすべきでした。

[ ]
RE:09820 検索文字列の強調表示No.09821
ひろ さん 01/09/19 00:22
 
 ひらさん、皆さん今日は、ひろです。
 度々すいません、自己レスです。
 先にアップしたマクロは、あいまい検索を考慮していませんでした。強調
表示関しては、あいまい検索は有りませんので、全てのオプションが OFF
の場合と同じ処理をするように変更したマクロを再アップします。
//--------------------- highlight search string macro ---------------------
//検索文字列を「特に強調表示2」に加える
//ただし強調表示定義 file の指定が無いのに、強調表示の設定自体はしてある場合、
//検索文字列の強調だけされ、それ以外の設定した有った強調表示は OFF になる。
//grep の結果や、標準出力の結果の場合は、上手くいかない→Ver.3.09 では改善可能
main:
  if(!hilightstate)config "y+";
  call GetLightChar;
  $$hilightChar = $$return;
  if(hilighttitle == ""){
    call HilightTitle;
    if($$return == ""){
      call MakeHilight "", $$hilightChar;
    }
    else call MakeHilight $$return, $$hilightChar;
  }
  else if(hilighttitle == "hilight.tmp"){
    call HilightTitle;
    if($$return == "")call MakeHilight "", $$hilightChar;
    else call MakeHilight $$return, $$hilightChar;
  }
  else call MakeHilight hilighttitle, $$hilightChar;
  loadhilight "hilight.tmp",0;
  endmacro;

MakeHilight:
  ##main = hidemaruhandle(0);
  if($$1 == "")openfile "/h ";
  else openfile "/h " + hidemarudir + "\\" + $$1,sjis;
  showwindow 0;
  gofileend;
  insert $$2 + "\n";
  saveas hidemarudir + "\\hilight.tmp",sjis;
  ##highlight = hidemaruhandle(0);
  setactivehidemaru ##main;
  closehidemaru ##highlight;
  return;

GetLightChar:
  ##option = 0;
  $$string = searchbuffer;
  if(searchoption&32){
    ##option = 8;
    $$string = dllfuncstr("charUpper",$$string);
  }
  else{
    if(searchoption&1)##option = ##option|32;
    if(searchoption&2 == 0)##option = ##option|8;
    if(searchoption&16)##option = ##option|16;
    if(searchoption&2 == 0 && searchoption&16 == 0){
      $$string = dllfuncstr("charUpper",$$string);
    }
  }
  ##option = ##option|67;
  return str(##option) + "," + $$string;

GetType://「C言語ソースファイル」等と file type が決まっていない場合は""を返す
  openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\." + $$1;
  if(result){
    $$type=getregstr("");
    closereg;
  }
  else $$type="";
  return $$type;

HilightTitle:
  call GetExtension basename;
  call GetType $$return;
  if($$return == "")
    openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Default";
  else openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Config\\"
    + $$return;
  $$HilightTitle = getregstr("HilightTitle");
  closereg;
  return $$HilightTitle;

TOUPPER://小文字を大文字に変換 (半角文字のみ)
  ##char=0x61;
  while(##char<=0x7A){
    call ChangeCharacter $$1,char(##char),char(##char-0x20);
    $$1=$$return;
    ##char=##char+1;
  }return $$1;

ChangeCharacter://buff 中の文字列を置換
//$$1:buff
//$$2:検索文字列
//$$3:置換文字列
  ##change_char=strlen($$2);
  $$string = "";
  while(1){
    ##long = strlen($$1);
    ##number = strstr($$1, $$2);
    if(##number == -1)break;
    else{
      $$string = $$string + leftstr($$1, ##number) + $$3;
      $$1 = rightstr($$1, ##long - ##number - ##change_char);
    }
  }
  return $$string + $$1;

GetExtension://拡張子を取得
//$$1:basename, basename2
  ##extension=strstr($$1,".");
  if(##extension==-1)return ".";
  else if(##extension==0)return "";
  while(1){
    ##extension=strlen($$1)-##extension-1;
    $$1=rightstr($$1,##extension);
    ##extension=strstr($$1,".");
    if(##extension==-1)break;
  }return $$1;

[ ]
RE:09821 検索文字列の強調表示No.09822
ひろ さん 01/09/19 02:25
 
 ひらさん、皆さん今日は、ひろです。
 本当に度々すいません、自己レスです。
 動作しないマクロを投稿してしまいましたm(__)m。
//--------------------- highlight search string macro ---------------------
//検索文字列を「特に強調表示2」に加える
//ただし強調表示定義 file の指定が無いのに、強調表示の設定自体はしてある場合、
//検索文字列の強調だけされ、それ以外の設定した有った強調表示は OFF になる。
//grep の結果や、標準出力の結果の場合は、上手くいかない→Ver.3.09 では改善可能
call GetLightChar;
$$hilightChar = $$return;
if(!hilightstate){
  config "y+";
  $$return = "";
}
else{
  if(hilighttitle == "" || hilighttitle == "hilight.tmp")call HilightTitle;
  else $$return = hilighttitle;
}
call MakeHilight $$return, $$hilightChar;
loadhilight "hilight.tmp",0;
endmacro;

MakeHilight:
  ##main = hidemaruhandle(0);
  if($$1 == "")openfile "/h ";
  else openfile "/h " + hidemarudir + "\\" + $$1,sjis;
  showwindow 0;
  gofileend;
  insert $$2 + "\n";
  saveas hidemarudir + "\\hilight.tmp",sjis;
  ##highlight = hidemaruhandle(0);
  setactivehidemaru ##main;
  closehidemaru ##highlight;
  return;

GetLightChar:
  ##option = 0;
  $$string = searchbuffer;
  if(searchoption&32){
    ##option = 8;
    call TOUPPER $$string;
    $$string = $$return;
  }
  else{
    if(searchoption&1)##option = ##option|32;
    if(searchoption&2 == 0)##option = ##option|8;
    if(searchoption&16)##option = ##option|16;
    if(searchoption&2 == 0 && searchoption&16 == 0){
      call TOUPPER $$string;
      $$string = $$return;
    }
  }
  ##option = ##option|67;
  return str(##option) + "," + $$string;

GetType://「C言語ソースファイル」等と file type が決まっていない場合は""を返す
  openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\." + $$1;
  if(result){
    $$type=getregstr("");
    closereg;
  }
  else $$type="";
  return $$type;

HilightTitle:
  call GetExtension basename;
  call GetType $$return;
  if($$return == "")
    openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Default";
  else openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Config\\"
    + $$return;
  $$HilightTitle = getregstr("HilightTitle");
  closereg;
  return $$HilightTitle;

TOUPPER://小文字を大文字に変換 (半角文字のみ)
  ##char=0x61;
  while(##char<=0x7A){
    call ChangeCharacter $$1,char(##char),char(##char-0x20);
    $$1=$$return;
    ##char=##char+1;
  }return $$1;

ChangeCharacter://buff 中の文字列を置換
//$$1:buff
//$$2:検索文字列
//$$3:置換文字列
  ##change_char=strlen($$2);
  $$string = "";
  while(1){
    ##long = strlen($$1);
    ##number = strstr($$1, $$2);
    if(##number == -1)break;
    else{
      $$string = $$string + leftstr($$1, ##number) + $$3;
      $$1 = rightstr($$1, ##long - ##number - ##change_char);
    }
  }
  return $$string + $$1;

GetExtension://拡張子を取得
//$$1:basename, basename2
  ##extension=strstr($$1,".");
  if(##extension==-1)return ".";
  else if(##extension==0)return "";
  while(1){
    ##extension=strlen($$1)-##extension-1;
    $$1=rightstr($$1,##extension);
    ##extension=strstr($$1,".");
    if(##extension==-1)break;
  }return $$1;

[ ]
RE:09822 検索文字列の強調表示No.09823
ひら さん 01/09/19 03:22
 
こんばんは。何度もレスありがとうございますm(_ _)m

早速使わせていただきたいと思います。
ありがとうございました。

[ ]