|
kiyo さん秀まるお2さん今日は、ひろです。
> 実は秀丸エディタ用にスペルチェックするマクロが世の中に
> 出ているようです。
>
> > http://www.phys.waseda.ac.jp/gravity/~tominaga/comp/hide_splchk.html
ただこのスペルチェックは、タイプミスしていた場合でも修正候補がでな
いので、CUI アプリケーションですし、アンドゥが出来なくなるのが欠点で
すが、私はこの WEB サイトでも
> 【一言】
> このマクロを使うよりispellを使った方が賢明でしょう。
と進められている ispell と連携する以下のマクロを利用しています。
//-------------------------------------------------------------------
if(filename == ""){
loaddll "tkinfo.dll";
if(!result){
message "ファイルを保存してから実行してください";
goto End;
}
if(dllfunc("IsTuruKame")){
goto TuruKame;
}
}
else goto Hidemaru;
TuruKame:
##main = dllfunc("MainWnd");
if(##main == 0){
##open = 1;
##handle = hidemaruhandle(0);
if(dllfunc("IsTrayIcon")){
##main = sendmessage(findwindowclass("TuruKameFrame"),0x0112,0xF120,0);
setactivehidemaru ##handle;
##main = dllfunc("MainWnd");
}
else{
message "本体が起動していないと、実行できません。";
goto End;
}
}
$$account = dllfuncstr("ExecAt",##main,"CurrentAccount");
$$folder = dllfuncstr("ExecAt",##main,"CurrentFolder");
##mailType = dllfunc("MailType");
if(##mailType != 0 && ##mailType != 5){
message "「草稿」「未送信」に保存された送信メールしか実行できません";
goto End;
}
if(!readonly)execmacro macrodir + "\\turukame\\OverWrite.mac";
loaddll "tkinfo.dll";
$$draftAccount = dllfuncstr("CurrentAccount");
$$draftFolder = dllfuncstr("CurrentFolder");
if($$draftFolder != "草稿" && $$draftFolder != "未送信"){
message "送信メールしか実行できません";
goto End;
}
##handle = hidemaruhandle(0);
$fileName = dllfuncstr("MailFilePath");
if(##handle != ##main){
if(!dllfunc("Sync"))goto Error;
}
else{
message "エディタ・ウィンドでしか動作しません。";
goto End;
}
if(!dllfunc("SetMainWndTop"))goto Error;
closehidemaru ##handle;
if(!dllfunc("ExecAt",##main,"SelectFolder",$$account,""))goto Error;
runsync2 "ispell -L20 -M -j -de:/usr/local/share/ispell/US-xlg.hash -x \""
//↑この行は ispell.exe や辞書の置き場所により変更が必要
+ $fileName + "\"";
if(!dllfunc("ExecAt",##main,"RemakeList",$$draftAccount,$$draftFolder))
goto Error;
if(!dllfunc("ExecAt",##main,"SelectFolder",$$draftAccount,$$draftFolder))
goto Error;
if(!dllfunc("OpenMail"))goto Error;
if(!dllfunc("ExecAt",##main,"SelectFolder",$$account,$$folder))goto Error;
if(##open)##tmp = dllfunc("ExecAt",##main,"Exit");
goto End;
Error:
message "DLL error";
End:
freedll;
endmacro;
Hidemaru:
freedll;
if(!readonly)save;
if((charset & 64) & (!(charset & 128)))##lf = 1;
##charset = charset & 63;
if(##charset == 2 || ##charset == 5 || ##charset == 6){
message "非対応文字コードです";
endmacro;
}
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
##Timestamp = getregnum("Timestamp");
##Sharing = getregnum("Sharing");
##DupOpen = getregnum("DupOpen");
writeregnum "Sharing",0;
writeregnum "DupOpen",0;
writeregnum "Timestamp",0;
closereg;
envchanged;
reopen;
runsync2 "ispell -L20 -M -j -de:/usr/local/share/ispell/US-xlg.hash \""
//↑この行は ispell.exe や辞書の置き場所により変更が必要
+ filename2 + "\"";
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "Sharing",##Sharing;
writeregnum "DupOpen",##DupOpen;
writeregnum "Timestamp",##Timestamp;
closereg;
envchanged;
reopen;
if(!##lf){
if(##charset == 1)saveas filename2, sjis;
else if(##charset == 3)saveas filename2, euc;
else if(##charset == 4)saveas filename2, jis;
}
endmacro;
//-------------------------------------------------------------------
このマクロを鶴亀で使用する場合、こちらのライブラリに公開している「
鶴亀メールちょっと便利なマクロ集」に含まれる OverWrite.mac も必要に
なります。
なお ispell は、
http://www.fsci.fuk.kindai.ac.jp/aftp/pub/ptex/utils/ispell-3.1.20-w32.tar.gz
で入手できます。
|
|