秀丸エディタ・HmCustomLivePreviewのカスタム 応用編概要ここでは、前節「秀丸エディタ・HmCustomLivePreviewのカスタム 中級編」の続きです。 HmCustomLivePreviewCS.macの作成それでは、HmCustomLivePreviewDefault.macをコピーして、HmCustomLivePreviewCS.macとしましょう。 今回は、JScriptではなくC#で関数を組むことになります。 「HmCustomLivePreviewCS.mac」編集hmJSのC#などで作った外部の「マネージドな.dll」の読み込みと 原則的には同じなのですが、少し工夫が必要です。 #dll = loaddll( currentmacrodirectory + @"\HmCustomLivePreview.dll" ); if (!#dll) { message("NO"); endmacro; } #_ = dllfuncw( #dll, "DoString", R"JSCRIPT( // 秀丸の現在使用しているマクロファイルのディレクトリを取得 var path = hm.Macro.Var("currentmacrodirectory"); // そのモジュールのパス(currentmacrodirectory)を「モジュールを置いても良いパス」として追加する AssemblyPath.Add(path); // モジュールを「clr」へと読み込み host.lib(clr, "CustomHtmlTranslater"); // 変数へと、クラスオブジェクトを生成 var htmltrans = new clr.MyNameSpace.MyClass(); function OnCustomTranslateHTML(filename, rawtext) { // 読み込んだC#で作ったライブラリを利用して、rawtextを変換 htmltext = htmltrans.translate(filename, rawtext); // このHTMLをブラウザ表示 return htmltext; } )JSCRIPT" ); #_ = dllfuncw( #dll, "Show", hidemaruhandle(0) ); C#側C#側はわかりやすいサンプルとしましょう。 using System; namespace MyNameSpace { public class MyClass { public string translate(string filename, string rawtext) { string htmltext = rawtext; // 実際には、System.Web.HtmlUtility.HtmlEncodeメソッドなどを利用して正確なものとするだろうが // 今回はjavascript版と同様、簡易な処理とする。 htmltext = htmltext.Replace("<", "<"); htmltext = htmltext.Replace(">", ">"); htmltext = htmltext.Replace("---", "<hr>"); htmltext = htmltext.Replace("\n", "<br>"); return htmltext; } } } プロジェクトの設定状態 .NET Frameworkのバージョンは、v4.0~4.62あるいは、4系であれば何でも読み込めます。 これをコンパイルすると、「CustomHtmlTranslater.dll」が出来上がりますので、 これをHmCustomLivePreviewで見てみると、下図のようになります。 JScriptで記述したものと同様になったことを確認できたことでしょう。 |