#32324
Yutaka Emura
Keymaster

以下のようなマクロの関数で可能です。


function ModifyFindFlags( bSet, nFlags, nExFlags ) {
    nHigh = 0;
    nLow = 0;
    s = editor.GetProfileString(eeRegCommon, "", "FindFlag", "0");
    if (s.length == 18 && s.substr(0, 2) == "0x") {
        nHigh = parseInt(s.substr(2, 8), 16);
        nLow = parseInt(s.substr(10, 8), 16);
    }
    
    if( bSet ) {
        nHigh |= nExFlags;
        nLow |= nFlags;
    }
    else {
        nHigh &= ~nExFlags;
        nLow &= ~nFlags;
    }
    s64 = "0x" + nHigh.toString(16) + ("00000000" + nLow.toString(16)).slice(-8);
    editor.WriteProfileString( eeRegCommon, "", "FindFlag", s64, eeRegQWord );
}

そして、以下のようにして関数を呼び出します。各フラグの説明は、
https://www.emeditor.org/ja/macro/selection/selection_find.html
を参照してください。注意する点として、nFlags と nExFlags と分けて指定する必要があります。


// eeFindMatchDotNL を設定
ModifyFindFlags( true, eeFindMatchDotNL, 0 );

// eeFindMatchDotNL をクリア
ModifyFindFlags( false, eeFindMatchDotNL, 0 );

// eeExFindBOL | eeExFindEOL を設定
ModifyFindFlags( true, 0, eeExFindBOL | eeExFindEOL );

// eeExFindBOL | eeExFindEOL をクリア
ModifyFindFlags( false, 0, eeExFindBOL | eeExFindEOL );

// eeFindMatchDotNL, eeExFindBOL, and eeExFindEOL を設定
ModifyFindFlags( true, eeFindMatchDotNL, eeExFindBOL | eeExFindEOL );

// eeFindMatchDotNL, eeExFindBOL, and eeExFindEOL をクリア
ModifyFindFlags( false, eeFindMatchDotNL, eeExFindBOL | eeExFindEOL );