- 作成者投稿
- 2010年8月5日 1:44 am #9665Hidetatsu参加者
ライブラリに登録されている、roku 様作成のマクロを僭越ながら改訂させて頂きました。
選択文字列を強調表示する要望を出そうとして、見つけた次第です。
roku 様、この場をお借りしまして、お礼申し上げます。主な変更箇所は、右から左に選択したときも機能するようにしたところです。
イベント(S): カーソルが移動したとき
とすることで、ほぼ希望通りの動作をするようになりました。//#icon = “highlight.ico”,0
//#title = “ハイライト”
//#tooltip = “選択文字列を反転”
(function() {
seltext = document.selection.Text;
if ( seltext == “” ) {
document.HighlightFind = false;
return;
}Window.Redraw = false;
docsel = document.selection;
tx = docsel.GetTopPointX(eePosLogical);
ty = docsel.GetTopPointY(eePosLogical);
bx = docsel.GetBottomPointX(eePosLogical);
by = docsel.GetBottomPointY(eePosLogical);if ( ty == by ) {
/*ax = docsel.GetActivePointX(eePosLogical);
leftToRight = true;
if ( ax != bx ) {
leftToRight = false;
}*/
leftToRight = docsel.IsActiveEndGreater;FIND_FLAGS = 0
| eeFindNext
//| eeFindReplaceCase
//| eeFindReplaceOnlyWord
| eeFindAround
| eeFindReplaceQuiet
| eeFindSaveHistory;docsel.Find(seltext, FIND_FLAGS);
docsel.SetActivePoint(eePosLogical, (leftToRight ? tx : bx), ty, false);
docsel.SetActivePoint(eePosLogical, (leftToRight ? bx : tx), by, true);
}Window.Redraw = true;
})();[2010/08/05 16:21]
複数行が選択されたときは反転しないようにしました。[2010/08/07 22:11]
function() タイプに変更しました。
こうすると、return できるんですね。
snow様のマクロを参考にさせて頂きました。[2010/08/12 11:25]
IsActiveEndGreater を使って判定するようにしました。
何故か、以前試したときは希望通りの値が返ってきませんでしたので、
/**/ の箇所で判定していました…。2010年8月5日 2:13 am #9666snow参加者本質的なところでないので、どうでもいいと言えばいいんですが。
withよりは一時変数を使うほうが高速に動作します。2010年8月5日 2:25 am #9667Hidetatsu参加者snow 様
ご指摘、ありがとうございます。
with を使わないように修正してみました。少し速くなったような気がします。(^^;
2010年8月5日 4:03 am #9668snow参加者すみません、書き方が中途半端で、誤解させてしまったようです…。
var s = document.selection;
s.SetActivePoint(eePosLogical, (leftToRight)? tx: bx, ty, false);
s.SetActivePoint(eePosLogical, (leftToRight)? bx: tx, by, true);こういうことでした。
2010年8月5日 4:24 am #9669Hidetatsu参加者あ、そう言う事でしたか。
度々すみません。m(_ _)m
マクロの方、修正しておきました。 - 作成者投稿
- このトピックに返信するにはログインしてください。