選択範囲を行に分ける・改

提供: MeryWiki
ナビゲーションに移動 検索に移動

複数行にわたる選択範囲を、論理行区切りで マルチカーソル・複数選択範囲 に分けます。

※[ポップアップメニューの設定] の [編集] カテゴリにある [選択範囲を行に分ける] コマンドをマクロ化し、ツールバーアイコンから実行できるようになります
※ 間違えて実行してしまった場合に Undo できます (設定項目undoEnable
※ 矩形選択状態から実行した場合の分割方式をカスタマイズできます (設定項目box2multiByLogical


動作要件: Mery ver 3.0.1 以上


ソースコード[編集]

ダウンロード >> 「ファイル:選択範囲を行に分ける・改.zip」(アイコン入り)
#title   = "行に分ける"
#tooltip = "選択範囲を行に分ける・改"
// #icon = "split_selections[2].ico"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",364

/**
 * ---------------------------------------------------------
 * 「選択範囲を行に分ける・改」マクロ
 * sukemaru, 2021/01/20
 * ---------------------------------------------------------
 * 複数行にわたる選択範囲を論理行区切りで
 * マルチカーソル・複数選択範囲に分けます。
 * ※ [ポップアップメニューの設定] の [編集] カテゴリにある
 *    [選択範囲を行に分ける] コマンドのマクロ化
 * ※ 矩形選択状態から実行した場合の分割方式をカスタマイズ化
 * 
 * 【仕様上の制限】
 * ・動作要件: Mery ver 3.0.1 以上 で
 *              複数行選択または矩形選択していること
 *            「マルチカーソルを有効にする」が ON であること
 * ・このマクロは、元の各選択範囲末尾の調整(末尾改行を除外)をしません
 * ・矩形選択以外の選択範囲では、
 *   表示行単位で(折り返しごとに)行に分けて複数選択範囲にすることはできません
 */

// ---------- ▼ 設定項目 ▼ ---------- //

// ■ UNDO 操作で元の範囲選択状態に戻せるようにする
var undoEnable = false;             // true: する / false: しない

// ■ 矩形選択範囲の分割方法
var box2multiByLogical = false;     // true: 論理行 / false: 表示行
  /**
   * true なら、折り返しより後ろ(改行まで)の文字列は選択範囲から除外する
   *   ※ 空行や行末以降の無文字部分では、各行末にキャレットを置く
   * false なら、実行前に範囲選択(反転表示)されている文字列すべてが選択範囲になる
   *   ※ 空行や行末以降の無文字部分は選択範囲から除外される
   */

// ---------- ▲ 設定項目 ▲ ---------- //

var s = editor.ActiveDocument.selection;

if ( editor.QueryStatusByID( EditSplitSelIntoLines = 2254 )
&& s.Text.indexOf( "\n" ) > -1 ) {

  if ( "AddUndo" in window && undoEnable ) {
    BeginUndoGroup();  AddUndo();
  }

  // 矩形選択を論理行で分ける
  if ( s.Mode == meModeBox && box2multiByLogical ) {
    s.Mode = meModeMulti;
  }

  // 選択範囲を行に分ける
  editor.ExecuteCommandByID( EditSplitSelIntoLines = 2254 );
}
スポンサーリンク