「キャレット位置の単語がデフォルトに設定されない検索コマンド」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
<source>タグを<syntaxhighlight>タグに置き換え
MSY-07 (トーク | 投稿記録)
SyntaxHighlightにcopyの追加
 
(同じ利用者による、間の4版が非表示)
1行目: 1行目:
= 概要 =
このマクロは[https://www.haijin-boys.com/software/mery/mery-2-6-6#5 Mery Ver 2.6.6]で追加された「検索ダイアログで [検索する文字列] の初期値を設定する」と同機能です。
 
== 概要 ==
文字列が選択されていない状態で「Ctrl + F」を押すとキャレット位置の単語が選択された状態で検索ウィンドウが表示されますが、それを前回検索した文字列が選択された状態にして検索ウィンドウを表示するマクロです。
文字列が選択されていない状態で「Ctrl + F」を押すとキャレット位置の単語が選択された状態で検索ウィンドウが表示されますが、それを前回検索した文字列が選択された状態にして検索ウィンドウを表示するマクロです。


「Ctrl + F」キーに割り当ててお使いください。
「Ctrl + F」キーに割り当ててお使いください。


= 動作 =
== 動作 ==
このマクロは下記のように動作します。
このマクロは下記のように動作します。


14行目: 16行目:
#: 選択文字列の開始位置の単語が設定されている状態で検索ウィンドウを表示(Mery準拠)
#: 選択文字列の開始位置の単語が設定されている状態で検索ウィンドウを表示(Mery準拠)


= 注意点 =
== 注意事項 ==
* 副作用で1の場合に元に戻す(Redo)の履歴が消えます。
* 副作用で1の場合に元に戻す(Redo)の履歴が消えます。


= 更新履歴 =
== 変更履歴 ==
* 2018/05/25 初版
* 1.0.0 (2018-05-25)
 
** 初版
= ソースコード =


<syntaxhighlight lang="javascript">
== ソースコード ==
<syntaxhighlight lang="javascript" copy>
#title = "キャレット位置の単語がデフォルトに設定されない検索コマンド"
#title = "キャレット位置の単語がデフォルトに設定されない検索コマンド"



2025年6月30日 (月) 01:16時点における最新版

このマクロはMery Ver 2.6.6で追加された「検索ダイアログで [検索する文字列] の初期値を設定する」と同機能です。

概要[編集]

文字列が選択されていない状態で「Ctrl + F」を押すとキャレット位置の単語が選択された状態で検索ウィンドウが表示されますが、それを前回検索した文字列が選択された状態にして検索ウィンドウを表示するマクロです。

「Ctrl + F」キーに割り当ててお使いください。

動作[編集]

このマクロは下記のように動作します。

  1. 文字列が選択されていない場合
    前回の検索文字列が入力されている状態で検索ウィンドウを表示
  2. 単一行内で文字列が選択されている場合
    選択した文字列が入力されている状態で検索ウィンドウを表示(Mery準拠)
  3. 複数行に渡って文字列が選択されている場合
    選択文字列の開始位置の単語が設定されている状態で検索ウィンドウを表示(Mery準拠)

注意事項[編集]

  • 副作用で1の場合に元に戻す(Redo)の履歴が消えます。

変更履歴[編集]

  • 1.0.0 (2018-05-25)
    • 初版

ソースコード[編集]

#title = "キャレット位置の単語がデフォルトに設定されない検索コマンド"

/**
 * 下記のように動作する検索コマンドです。
 * 1. 文字列が選択されていない場合
 *      → 前回の検索文字列が入力されている状態で検索ウィンドウを表示
 * 2. 単一行内で文字列が選択されている場合
 *      → 選択した文字列が入力されている状態で検索ウィンドウを表示(Mery準拠)
 * 3. 複数行に渡って文字列が選択されている場合
 *      → 選択文字列の開始位置の単語が設定されている状態で検索ウィンドウを表示(Mery準拠)
 * 
 * 【注意点】
 * ・副作用で1の場合に元に戻す(Redo)の履歴が消えます。
 */

// 1. 文字列が選択されていない場合
if (document.selection.Text == "") {
    // 現在の変更状態を取得
    var isSaved = document.Saved;
    // 現在のキャレット位置を保持
    var pointX = document.selection.GetActivePointX(mePosLogical);
    var pointY = document.selection.GetActivePointY(mePosLogical);
    // 現在のキャレット位置に空行追加
    // (キャレット前方に空白か改行がある状態で検索ウィンドウを開くと前回の検索文字列が入力されている動作を利用)
    document.selection.LineOpen();
    // 検索ウィンドウを表示
    editor.ExecuteCommandByID(2133);
    // 追加した空行を削除
    document.Undo();
    // キャレット位置を復元
    document.selection.SetActivePoint(mePosLogical, pointX, pointY, false);
    // 変更状態を元に戻す
    document.Saved = isSaved;
}
// 2. 単一行内で文字列が選択されている場合
// 3. 複数行に渡って文字列が選択されている場合
else {
    // 検索ウィンドウを表示
    editor.ExecuteCommandByID(2133);
}
スポンサーリンク