レンダリング枠の配置位置No.11258
western さん 23/04/24 10:54
 
現状でカーソル位置(xpixel/ypixel)に overlay 指定するレンダリング枠は、
左側や上側のパネル表示トグルや画面のスクロールやカーソル移動に
追随させられないのでヒント表示や補完処理の表示中の
想定外の操作で位置がおかしな状態となります

期待する処理を実現するために、以下のパターンで
実現可能なものがあれば、ぜひお願いします

1. 縦横スクロールに追随してくれる

・overlay なレンダリング枠を置く位置を、秀丸エディタ上
 の指定した文字(x,y / lineno,column_wcs)の 上or下 をアンカーポイント(枠の左
右指定含む)にして
 画面がスクロールしたら、指定した文字の位置の移動に追随させることは可能でし
ょうか?

その状況で上や下のどちらに表示させるか? や 幅が大きいと画面からはみ出るパ
ターンあるので、
画面内に入る位置まで押し戻すなどは、その都度マクロ側で取得できる値から改めて
計算して再指定する必要ありますが……

screenleftx より左側に隠れるパターンもありますが、これは VS Code でも対応出
来てない挙動でした


2. 範囲を指定したらレンダリング枠が消えてくれる
・renderpanecommand するに、seltopx, seltopy, selendx, selendy のような範囲
指定をして
 それを外れるカーソル移動が発生した場合に、自動で非表示 (#11254 のコメント
で説明している動作)
 にする仕組みは可能でしょうか?


3. 上記1〜2をマクロで *迅速に* 処理するためのコールバック

上記1〜2などのパターンをリアルタイム(状況を遅延が最小という意味で同期的)
にマクロ記述でリアルタイムに解決するのに「カーソル移動」「スクロール」
が発生したというコールバックしてもらえる keyhook の拡張は可能でしょうか?
(マクロの自動起動への keyhook もどき)

カーソル位置に置くために overlay の起点を screentopy / screenleftx にする都合上
「編集エリアのサイズが変わった」「(パネル表示で)編集エリアの起点が移動した」
も再描画しなければならない自動起動マクロには無いシチュエーションとなります
(overlay 指定時に編集エリアの左上からのカーソル相対位置の値が取れないので)

先日に話題で出た「ファイルを閉じる直前」も、これの類で
特定マクロが有効な状況でだけ後始末できる仕組みに使えます
(#11239, #11244 にあった状況を解決するには不完全ですが)

jsmode で多くの値の取得が必要なコスト考えると
コールバックに渡される引数として最低限の関連する値が
入っていれば枠の消去や表示位置の移動の分岐処理や計算やができます

あるいは postExecMacroMemory か postExecMacroFile に回して
従来マクロでロジック記述するのが最小コストだとは思いますが。


あるいは別アイデアで解決策あればその仕組みの機能追加や、
既存マクロでの実現方法あれば、よろしくお願いします

[ ]
RE:11258 レンダリング枠の配置位置No.11265
秀丸担当 さん 23/04/24 16:49
 
overlay指定時、枠のON/OFFなどでずれてしまいました。
というかalign/valignのscreentop/screenleftなどの指定でも、ウィンドウを移動し
たりサイズ変更でもずれたりしました。
枠のON/OFFでも本文がる編集エリアを基準に自動的に再配置されたほうがよさそうで
す。
screentop/screenleftなどは、xpixel/ypixelに合うようにしたもので、別ウィンド
ウにようにスクリーン座標に固定する目的ではありませんでした。
指定するときだけスクリーン座標で、ウィンドウ自体の移動やサイズ変更などは編集
エリア基準に自動的に再配置されたほうがよさそうです。
そういった感じで調整します。

縦横スクロールに追随といったようなことは、やるとしたらコールバックで処理より
本体としてネイティブ的にそういう機能としてあったほうがいいかもしれません。
カーソル移動で自動的に消えるのは、現状でマクロの制御でなんとかなる気もします。
別スレッドでも書きましたが、V9.22ではブラウザ枠と追随しまいレンダリング枠ま
でにしておきたいところです。

[ ]