1 件の投稿を表示中 (合計 5 個)
  • 作成者
    投稿
  • #9665
    Hidetatsu
    参加者

    ライブラリに登録されている、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 を使って判定するようにしました。
    何故か、以前試したときは希望通りの値が返ってきませんでしたので、
    /**/ の箇所で判定していました…。

    #9666
    snow
    参加者

    本質的なところでないので、どうでもいいと言えばいいんですが。
    withよりは一時変数を使うほうが高速に動作します。

    #9667
    Hidetatsu
    参加者

    snow 様

    ご指摘、ありがとうございます。
    with を使わないように修正してみました。

    少し速くなったような気がします。(^^;

    #9668
    snow
    参加者

    すみません、書き方が中途半端で、誤解させてしまったようです…。

    var s = document.selection;
    s.SetActivePoint(eePosLogical, (leftToRight)? tx: bx, ty, false);
    s.SetActivePoint(eePosLogical, (leftToRight)? bx: tx, by, true);

    こういうことでした。

    #9669
    Hidetatsu
    参加者

    あ、そう言う事でしたか。
    度々すみません。m(_ _)m
    マクロの方、修正しておきました。

1 件の投稿を表示中 (合計 5 個)
  • このトピックに返信するにはログインしてください。