|
先に要望として出している内容に重なり恐縮なのですが
特定の文字の位置の xpixel2/ypixel2 な座標が得られる関数か
行の高さピクセル と 半角文字の幅ピクセル を取得できる
マクロ命令を改めて希望します
画面上の複数の場所で xpixel2, ypixel2 を取得し
それぞれの x, y の差を計算して
行の高さピクセル と 半角文字の幅ピクセル
を取得できるようになりました
先にアドバイス頂いた disabledraw2 を使うことで
大半のシチュエーションでは自然に取得できてはいるのですが
disabledraw2; からの enabledraw y, x; の処理が
ヘルプの言い回しから y のみ有効という処理のせいか
screenleftx を変化させずに x の違う xpixel2 を複数取れない状況で
screenleftx を変化させてしまうことで、
enabledraw; 時に disabledraw2; 開始前の横スクロール位置の再現ができない状況
となりました
disabledraw; からの enabledraw y, x; であれば、第2引数も有効なので
disabledraw2; ⇒ enabledraw; ⇒ disabledraw; ⇒ enabledraw y, x;
disabledraw2; ⇒ enabledraw y; ⇒ disabledraw; ⇒ enabledraw y, x;
disabledraw2; ⇒ disabledraw; ⇒ enabledraw y, x;
のように試してみましたが redraw; をしなくても disabledraw; のタイミング?
で再描画が発生してしまいガクガクっと連続します。
※ガクガクっとした後で、カーソル位置とスクロール状態の復帰は想定通りの場所に
なる
幅と高さが取得できる命令あるならそれで終わる処理ですが
フォントサイズ変化や関連設定変更で変わる値なので
座標設定時に毎回150行超える上記のロジックで再計算必要になっています
(jsmode では計算に使う同期命令が複数必要なのと、
呼び出しコストの都合で従来マクロに行ったり来たりです)
・x, y / lineno, column_wcs を指定した xpixel2 / ypixel2 が取得できる関数
・行の高さピクセル と 半角の幅ピクセル が取得できるキーワード
・jsmode でもコスト低くエディタの設定の値から上記の値が厳密に取得できる計算式
・disabledraw2; からの enabledraw y, x; で第2引数の screenleftx を指定
・disabledraw2; ⇒ enabledraw; ⇒ disabledraw; ⇒ enabledraw y, x; で画面が
乱れないフロー
いずれかの実現をよろしくお願いします
|
|