|
m_OnO_m さん今日は、ひろです。
> (デフォルトの強調表示でも充分綺麗に java が書けることなど)
私は、逆にデフォルトに無い強調表示を定義できる柔軟性が、秀丸の優位性
だと思います。
> サクラエディタには「検索」した単語を全て強調表示してくれる機能が
> あり、それは非常に便利です。
この機能自体は稀に要望も有ることですし反対はしませんが、
> 秀丸の強調表示設定をいじるために他の強調表示が殺されてしまう等の
> 問題がある上、非常に低速です。
ということはないと思います。末尾のマクロなら、1 秒かかりませんし、他の
強調表示はそのままです。
//検索文字列を「特に強調表示2」に加えるマクロ
//ただし強調表示定義 file の指定が無いのに、強調表示の設定自体はして
//ある場合、検索文字列の強調だけされ、それ以外の設定した有った強調表
//示は OFF になる。
//あいまい検索は、強調表示ににその扱いが無いので全ての option OFF の扱い
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\\" + filetype;
if(result){
$$type=getregstr("");
closereg;
}
else $$type="";
return $$type;
HilightTitle:
if(filetype == "new" )
openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\Default";
else if(filetype == "exeresult" || filetype == "grep")
openreg "CURRENTUSER","Software\\Hidemaruo\\Hidemaru\\" + filetype;
else{
call GetType;
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){
##number = strstr($$1, $$2);
if(##number == -1)break;
else{
##long = strlen($$1);
$$string = $$string + leftstr($$1, ##number) + $$3;
$$1 = rightstr($$1, ##long - ##number - ##change_char);
}
}
return $$string + $$1;
|
|