V9.22β10No.11215
秀丸担当 さん 23/04/12 15:06
 
V9.22β10を公開しました。
マクロ専用ですがレンダリング枠というのを追加しています。
ブラウザ枠とはまた別で、やり方がいくつもできてしまっています。
ややこしくてすみません。

以下のページの「先行開発バージョンはこちら」からダウンロードできます。
https://hide.maruo.co.jp/software/hidemaru.html

32bit版:
https://hide.maruo.co.jp/software/bin3/hm922b10_signed.exe

64bit版:
https://hide.maruo.co.jp/software/bin3/hm922b10_x64_signed.exe

[ ]
RE:11215 V9.22β10No.11216
こみやんま さん 23/04/12 19:31
 
setbrowserpanetarget ですが、他のコマンドと異なり、
0 1 2 を使わず "_common", "_each" になってるのは何か理由がありますか?

(普通なら1, 2あたりを使いそうですし、かりに何か文字列にした方がよかったとし
ても 「_」(アンダーバー)が先頭についている理由もよくわかりません。

navigateとかrendering は名称は横着せずに

browserpanenavigate
renderpanenavigate

みたいにしておいたほうが、後々を考えるといいんでないかなーとは思います。

browserの方は他の関数(browser***)との命名のパターンが一致しますし、
browserpane navigate
renderpane navigate
とすることで、
主体は違うが動詞同じだから似てるんでないかという推測が働きます。

まぁやや長くて目がチカチカするから短くしましたって感じかもしれませんが。

[ ]
RE:11216 V9.22β10No.11217
秀丸担当 さん 23/04/13 08:44
 
β10の命名規則は、自分でもどうかと思います。
今までアウトライン解析の枠関係の文を踏襲していろいろ命名規則に沿ってきていた
のですが、browserpaneなんとかがたくさんあって、だんだん疲れてきました。
少なくしたいです。
アンダーバーはhtml的なAタグのtarget="_blank"とtarget="任意名"とかみたいな感
じで、最初は任意名ならレンダリングにしようとしていましたが、分離したのであん
まり意味は無くなってしまいました。
番号でも一応できます。

英語の文法は一致していない感がありますが、はたして何が適切なのか、、、
browser  browse browsing
renderer render rendering

今のbrowserpanecommandは実はnavigateと全く同じです。
文字列によってJSONだったりコマンドだったり変えれるので、これがいいかもしれま
せん。
アドレスですが ...command "javascript:..."; とできるのはコマンドっぽいです。

レンダリング枠のほうにも既定の枠指定のsetrenderpanetargetがあってもいいと思
います。
renderpanecommandに変更して、registercallbackとか作って、jsじゃなくても以下
のような感じでできるようにしてみようかと…
こっちのほうがjsよりも簡潔かもしれないです。

//サンプルにあるボタン押すのをjs無しにした例(β10で動くわけではないです)
if(event==10){//ボタン押した
  message geteventparam(0);
  endmacro;
}
//通常の処理
setrenderpanetarget "rendering#1";
renderpanecommand """
    {
    "show":1,
    "url":"file:///c:/folder/rendering.html",
    "place":"leftside",
    }
    """;

while(1){
  $readyState = renderpanecommand( "get_readyState" );//または{"get":"readyS
tate"}
  debuginfo $readyState+str(#i)+"\r\n";
  if($readyState=="complete")break;
  //message "","",0,10;
  if(iskeydown(0x1B)){//Esc
    endmacro;
  }
}

#idCallback=registercallback(currentmacrofilename);//event=10で呼ばれる
$url = "javascript:idCallback="+str(#idCallback)+";";
renderpanecommand( $url );//または{"url":"..."}

endmacro;

[ ]
RE:11217 V9.22β10No.11218
こみやんま さん 23/04/13 09:40
 
>β10の命名規則は、自分でもどうかと思います。
>今までアウトライン解析の枠関係の文を踏襲していろいろ命名規則に沿ってきてい
>たのですが、browserpaneなんとかがたくさんあって、だんだん疲れてきました。

わたしも、browser系はちょっと沢山ありすぎかな? と思います。

思い切って、browserpanecommand (navigateでもsetbrowserpane でもいいんですが)
で、秀丸マクロなら「json文字列」で、jsmodeならjsonで(文字列も受け付けるでも
いいですが)


で、
■基本は「set」と「get」の趣旨の関数2本にまとめて、個別のはカットします?

要するに

設定系
set_broswerpane的関数( json文字列 or json_obj )
 -  引数は、navigate等と同じような感じで設定する

get_broswerpane的関数( target );
- tatgetには取得したい項目名。
 例えばshowを得たいなら"show"や"url"で、
 引数を渡さないとurl,show他、情報を得られる。

-「targetを指定しない」と秀丸マクロでは状態情報全体
 (主眼はset_broswerpaneで引数として渡してるようなプロパティや、
 loadedなどの情報)
   「秀丸マクロならjson文字列」、「jsmodeではjson_obj」で返す、みたいな感じ
とか?


set_broswerpane的関数( {show:1, target:2(あるいは"_each")} ); とだけ書いてあ
れば、
showbrowserpane 1, 2 と同じ意味。


そうすればrenderの方もほぼ同様な実装で、「set」の意味(今のrenderあるいはcomm
andなど)と「get」の2本に大きく集約出来るのでは...


一方で、2つの関数のヘルプが「うわぁ〜っと」巨大になるという弱点はありますがw




ブラウザ枠にしろ、レンダリング枠にしろ、
ほとんどの場合は、最初にいろんなプロパティ付きで set系した後は、
何か判断して、今で言うurl相当の部分にjavascript送信か新uri設定するだけー み
たいな感じだと思うんですよねー。
(レンダリングはget系も多めでしょうけど)

[ ]
RE:11218 V9.22β10No.11219
秀丸担当 さん 23/04/13 17:53
 
いろいろありがとうございます。

>設定系
>set_broswerpane的関数( json文字列 or json_obj )
> -  引数は、navigate等と同じような感じで設定する
>
>get_broswerpane的関数( target );
>- tatgetには取得したい項目名。

browserpanecommandでも、こういうのでも、ありかもしれないです。
前からそうなのですが、秀丸マクロの文法として関数だと返り値を見なくてはいけな
い、文だと括弧をつけないとなっていて、setとgetが対の表現にならないということ
があったりします。
いろいろ考えたのですが、やっぱりbrowserpanecommandにしようかと思います。

>一方で、2つの関数のヘルプが「うわぁ〜っと」巨大になるという弱点はありますがw

既にそうなりつつありますが、文や関数が大量に増えるよりかはよさそうな感じです。

[ ]
RE:11215 V9.22β10No.11220
western さん 23/04/14 06:37
 
新しいベータの公開お疲れ様です

レンダリング枠の追加ありがとうございます
私が希望していた機能が満載なので、さっそく使い倒してみました

秀丸エディタのレンダリング枠でLSPサーバ連携を利用したコードアシスト
https://youtu.be/JU3WPnUZc7Y


※今回の動画範囲ではブラウザ枠は使っておりません
 メソッドシグネチャ表示とカーソル位置の各種ヒント情報のホバー表示
 あたりまでデバッグ終わったら、マクロ公開したいと思います



まだプロトタイプ段階でAPI調整やデバッグが大変だと思いますが
無事にベータ卒業できるのが楽しみです

マクロAPIや仕様が変わる分には追随しますので今後の拡張や
ポリシーに合わせたバージョンアップしていって下さい


マクロ機能の質問

レンダリング枠のオーバーレイ表示の座標指定に使える
エディタの編集エリアの左上の座標
が正確に取得できる命令(or計算式)があればご教示お願いします

上記動画はアウトプット枠等を非表示、上部表示レンダ枠 の幅を決め打ちして
それっぽい場所に出るようにマジックナンバー入りで計算しています(笑

[ ]
RE:11220 V9.22β10No.11221
秀丸担当 さん 23/04/14 09:26
 
いきなりそこまでできていて、驚きました。
すごいですね。
β10ではマクロの文の名前が横着している部分を変えようとと思ったのですが、放置
しておくのもなんなので早めに修正しようと思います。
あとせっかくhttpを塞いだ部分がβ10で防いでいなかった部分ができたりして、それ
らも修正します。

>マクロ機能の質問
>
>レンダリング枠のオーバーレイ表示の座標指定に使える
>エディタの編集エリアの左上の座標
>が正確に取得できる命令(or計算式)があればご教示お願いします

xpixelの値を使おうとするとずれてしまうと思います。
とりあえずalignの指定をscreenleftとかスクリーン座標系で指定できたりするよう
にしてみます。
また不足があったら追加したりするかもしれません。

ちなみにV9.19のときにライブラリにアップしたLSPクライアントのサンプルは、サン
プルのつもりなので自由にコピペしたり配布物があったら含んでもらっていいです。

[ ]
RE:11220 V9.22β10No.11225
こみやんま さん 23/04/14 22:04
 
お、早速 hidemaru jsmode 用 TypeScript 定義ファイル(hm_jsmode.d.ts)が使われ
ていてなによりです。
なにかわかりやすい あだ名は無いものか...

可能ならこの定義ファイルは、サイトー企画さんに引き取って欲しい(==


[ ]