1 件の投稿を表示中 (合計 3 個)
  • 作成者
    投稿
  • #18832
    Autumn
    参加者

    OS Vista
    ソフトのバージョン 14

    バージョン13から14にバージョンアップした直後、
    StartOfDocument メソッドの挙動に変化がありました。

    document.selection.StartOfDocument( [ bExtend ] );

    bExtend

    省略可能。選択範囲を解除するかどうかを指定します。省略すると、選択範囲を解除して移動します

    とありますが、

    たとえば

    下記のようなテキストがあって
    ■ 12/14(土)

    ■ 12/15(日)

    下記のようなプログラムを動作させた場合(テスト用プログラム.jsee)
    var 日付= new Array() ;
    var 日数= new Array() ;
    //
    //行頭が■の行の数を数える
    document.selection.StartOfDocument(false);//テキストの文頭にカーソルを移動する
    日数=document.selection.Find(“^■”,eeFindSaveHistory | eeFindReplaceRegExp | eeFindCount | eeFindSelectAll);
    alert( “日付は”+日数+”日あります” );

    //行頭が■の行を検索 次を検索
    //\\d\\d/\\d\\dでは文中の日付をひろってくる可能性がある
    //理由はよくわからないが、StartOfDocument(false)とすると、■直後にカーソルが移動する
    //document.selection.StartOfDocument(true);//テキストの文頭にカーソルを移動する。
    document.selection.StartOfDocument(false);//テキストの文頭にカーソルを移動する

    Quit();

    カーソルが■の直後に移動します。
    それも、■が二つあるので、その両方の直後にカーソルが点滅してます。

    document.selection.StartOfDocument(true);とすると、
    選択範囲は解除されませんが、カーソル位置は文書の文頭に移動します。

    以前は、つまりバージョン13の時は
    document.selection.StartOfDocument(false);
    にした場合、選択範囲は解除され、カーソル位置も文書の文頭に移動していたのですが
    これは正しい挙動なんでしょうか。

    ちなみに、検索直後に手動で
    Ctrl + Home キーとすると、正しく、カーソルは文書の文頭に移動します。

    マクロの記録でCtrl + Home キーとすると
    document.selection.StartOfDocument(false);と記述されます。

    #18833
    Yutaka Emura
    キーマスター

    kanon 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    ご指摘のように、v14 から、複数選択の状態で、カーソルが自由に移動できるようになったため、仕様が変わりました。

    document.selection.StartOfDocument(false);//テキストの文頭にカーソルを移動する

    の前に、

    document.selection.Collapse();

    を入れてお試しください。

    よろしくお願い申し上げます。

    Yutaka

    #18838
    Autumn
    参加者

    迅速で的確な対応ありがとうございます。
    プログラムの挙動を確認してから、と思っていたら、遅くなってしまいました。
    返答が遅れて、すみません。

    教えていただいた通り、命令を一文、追加すると、
    以前の動作に戻りました。ありがとうございます。

    また、ソフトの仕様の変更に伴って、変更になったマクロの仕様の変更も
    ヘルプにて、付け加えていただくとありがたいです。
    お願いします。

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