|
現状でカーソル位置(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 に回して
従来マクロでロジック記述するのが最小コストだとは思いますが。
あるいは別アイデアで解決策あればその仕組みの機能追加や、
既存マクロでの実現方法あれば、よろしくお願いします
|
|