ブラウザ枠を使ったマクロNo.11413
western さん 23/05/29 09:15
 
β卒業の気配がしているので、
(個別)ブラウザ枠の活用事例になりそうなマクロを作ってみました
これらは公開予定ですが、引き取っていただいても構いません (CC0です)


■ PreviewFrame.mac

画像ファイル (拡張子 .bmp .gif .png .jpg .jpeg .svg)
音声ファイル (拡張子 .wav .mp3 .opus .ogg)
動画ファイル (拡張子 .mp4 .webm .ogv)
HTMLファイル (拡張子 .html .htm)
ドキュメントファイル (拡張子 .pdf)

を秀丸エディタで開いた状態(バイナリなので本来は開くことないですがw)
でマクロ実行すると、プレビュー枠で該当ファイルが表示されます

音声(<audio>) 動画(<video>)は再生し (controls の再生ボタンを押す必要あり)
画像(<img>)とPDF(内部ビューワ)とHTML(iframe)は表示

https://drive.google.com/file/d/1wNsxhYkGMnTv6SgX4FYY5XNic_5E3UKc/view?usp=drive_link

■ LiveReload.mac

こみやんまさんも話題に出していたウェブサーバ (ライブリロード対応)
をタブ毎に内部で実行してシームレスに使うマクロです
ウェブサーバのソースコード(C#)付きです

.css を編集エディタで編集しながら、このマクロでブラウザ枠に別のHTMLを表示
編集中の .css を link href="" 参照しているなら(css部分だけ!)自動リロードさ
れます
画像を上書き(タイムスタンプ更新)するなどでも、インテリジェントに個別にリロー
ドされます

マクロ実行時に「どのファイルをブラウザ枠に表示するか?」
「そのファイルの上位フォルダのうち、どこを DocumentRoot にするか?」
という挙動にしていますが、

[動作設定] のフォルダ指定項目で利用している
『フォルダ選択ダイアログ』をマクロ命令で使えるようにに追加して欲しいと思いま
した
表示時デフォルトフォルダ指定して、選択後フォルダを取得できるだけで充分です

https://drive.google.com/file/d/1EgC9-MIyKzXHyi7QGjIxEFD6lgrgkj9G/view?usp=drive_link



当たり前のことですが、同じ個別ブラウザ枠を使うマクロを併用すると喧嘩しますねw
外部サイトにアクセスしないのであれば、ドッキング型レンダリング枠バージョンの
方が無難のようです


レンダリング枠マクロも大量にこさえましたが、切り出すにはこなれておらず
とりあえずシンプルにブラウザ枠バージョンで

[ ]
RE:11413 ブラウザ枠を使ったマクロNo.11418
western さん 23/05/31 18:42
 
ライブリロード対応HTTPサーバについて (js{ } 部分を消したいがためにw)
C#版実行形式exe だけでなく C++/CLI版 のDLLも作ってみました (.cpp付 CC0)

https://drive.google.com/file/d/1APIMMw0zGaDMBB_RzkQHrhkRJ4blEhRW/view?usp=drive_link

端折ればこれだけの記述でブラウザ枠でも外部のブラウザでもアクセス出来ます

#LiveReloadDLL = loaddll(macrodir + @"\LiveReloadDLL.dll");
#port = dllfuncw(#LiveReloadDLL, "StartW", @"C:\ドキュメント\ルート");
$url = sprintf("http://localhost:%d", #port);



Windows 10/11 64bit と Windows 7 32bit で動作確認済み
インストールしたての Win7 SP1 Pro 32bit を最小限アップデートして
秀丸エディタβと依存ランタイムの以下2つを入れた状態で動作確認できました

.Net Framework (Target を 4.6.2 でビルドしたので 4.6.2 をインストール)
VC++再頒布可能パッケージ (Visual Studio 2015-2022 の最新バージョン)

※WebView2 関連機能はサポート終了前のインストーラを見つけられなかったので未確認

Windows7はOS側(http.sys)がWebSocketに対応していないので(Win8 からはいけるら
しい)
ライブリロードは効きませんがHTTPサーバとしては問題なしです(IE8で表示確認)


実装したコードはリファレンス見ながらの完全にスクラッチ/バニラな内容で
MSのリファレンスのサンプルからの引用程度、以上・以外のコピペも
プログラミング支援AIも使っておりませんので、著作権的に完全なクリーンな状態です
(私もCC0で主張しない)

ライブリロードのクライアントスクリプト(LiveReload.js) は公式の配布物を添付し
ています

このサンプルコードを参考に、本体側の機能としてHTTPサーバ機能を追加していただ
ければ
ブラウザ枠/レンダリング枠 の活用として敷居高めの多くのユーザも食指動いてく
れると思います

[ ]
RE:11418 ブラウザ枠を使ったマクロNo.11421
秀丸担当 さん 23/06/01 09:34
 
いろいろ作っていただいてありがとうございます。
V9.22より後ではhttpサーバーの案もありますが、参考にさせていただきます。
(やるとしたらランタイムライブラリとかの依存性は低いものにするかもしれません)

自分としては前にアップされていた、mdのリアルタイムカーソル位置連動とか、リッ
チなアウトプット枠とか、オーバーレイの候補とかのほうが興味があります。
ぜひそのあたりもライブラリにアップしていただけたら幸いです。

[ ]
RE:11421 ブラウザ枠を使ったマクロNo.11429
western さん 23/06/02 21:59
 
Markdownプレビュー(同期スクロール対応)マクロです
2か月溜めたノウハウと最新β機能に合わせてブラッシュアップしました

https://drive.google.com/file/d/1Fg7Vpy_IKRaPxR1ME8S_-21rf4RHnNav/view?usp=drive_link
今回はMITライセンスです

今のところトラブル無しに常用できていますが
フィーリングを阻害しない細かいこだわりUI調整と
無茶振りテスト(耐久試験)して支障なければ、
ライブラリに投稿させて頂きます

レビューや配慮事項などアドバイス頂ければ幸いです

[ ]
RE:11421 ブラウザ枠を使ったマクロNo.11431
western さん 23/06/03 15:58
 
「LSP(Language Server Protocol)用マクロサンプルとJSONサーバー/TypeScriptサー
バーの例 V0.02」

にレンダリング枠で LSPエラー一覧枠 を追加する差分ファイルです
上書きして実行すると、診断枠が表示され
メッセージのダブルクリックで該当位置に飛びます
CC0 (著作権を主張しない) とするので引き取って調整して頂けると幸いです
追加行数はそんなに多くなくロジックもシンプルです

https://drive.google.com/file/d/12_PCnctemomOdxBWsbdP-oT5EQPNZdoQ/view?usp=drive_link



シグネチャ(引数リスト)と、シンボル(カーソル位置のワード)の、
ヒント (ホバー)枠も調整中ですが、
先に報告した ESC の keyhook  で jsmode がエラー落ちするので
ウィンドウを閉じるあたりを回避して試行錯誤中です。

オートコンプリート枠も調整中ですが、LSPクライアントとして使う上で
実用状態に不足があるため(私がプロトコルの使い方を恐らく読み切れてないので)
多分今日明日では公開できる状態にありません

[ ]
RE:11431 ブラウザ枠を使ったマクロNo.11433
秀丸担当 さん 23/06/05 14:11
 
どちらもありがとうございます。
動くことが確認できました。
いい感じですね。

1つ気づいたこととしては、差分だから無かっただけかもしれないですが、LSPのほ
うは.macのほうのhidemaruverisonのバージョンを上げておいたほうがよさそうでした。

[ ]