「カッコで囲う2」の版間の差分

275 バイト追加 、 2023年5月17日 (水)
<source>タグを<syntaxhighlight>タグに置き換え
(ページを作成)
 
(<source>タグを<syntaxhighlight>タグに置き換え)
 
(2人の利用者による、間の2版が非表示)
1行目: 1行目:
選択範囲(複数選択可)の各行を、ポップアップメニューから選択したアイテム(カッコ)で囲います。<br>
選択範囲(複数選択可)の各行を、ポップアップメニューから選択したアイテム(カッコ)で囲います。<br>
Mery ver 3.0.0 以降のマルチカーソル/複数選択範囲に対応 。
Mery ver 3.0.0 以降のマルチカーソル/複数選択範囲に対応 。
<br><br>
 
; 機能
== 機能 ==
* 複数行選択や複数選択(またはマルチカーソル状態)を行に分けたそれぞれの部分をカッコで囲います。
* 複数行選択や複数選択(またはマルチカーソル状態)を行に分けたそれぞれの部分をカッコで囲います。
* 選択範囲がないときはカーソル位置(マルチカーソル可)それぞれにカッコを挿入します。
* 選択範囲がないときはカーソル位置(マルチカーソル可)それぞれにカッコを挿入します。
* 選択範囲がひとつのとき、選択範囲のさいごの改行は無視します。
* 選択範囲がひとつのとき、選択範囲のさいごの改行は無視します。
<br>
 
; 制限事項
== 制限事項 ==
* '''このマクロは Mery ver 2.x では使用できません。'''
* '''このマクロは Mery ver 2.x では使用できません。'''
* 複数行の選択範囲全体を一組のカッコで囲うことはできません。
* 複数行の選択範囲全体を一組のカッコで囲うことはできません。
* 矩形選択範囲は複数選択範囲に分解します(選択範囲を行に分ける)。
* 矩形選択範囲は複数選択範囲に分解します(選択範囲を行に分ける)。
* クリップボードを経由しての「マルチカーソル貼り付け」処理をおこなうので、外部アプリのクリップボード監視ソフトが常駐している場合は正常に機能しないかもしれません。
* クリップボードを経由しての「マルチカーソル貼り付け」処理をおこなうので、外部アプリのクリップボード監視ソフトが常駐している場合は正常に機能しないかもしれません。
<br>
 
; カッコの登録
== カッコの登録 ==
: ソースコード内の設定項目の配列でカッコの種類を定義します。
: ソースコード内の設定項目の配列でカッコの種類を定義します。
: カッコで挟みこまれる部分を <code>...</code> で置きかえた <code>"「...」"</code> が基本形式となります。<br>
: カッコで挟みこまれる部分を <code>...</code> で置きかえた <code>"「...」"</code> が基本形式となります。<br>
: ※ <code>...</code> がないアイテムはメニューに表示されません。
: ※ <code>...</code> がないアイテムはメニューに表示されません。
: ※ <code>...</code> を行頭に付加させることはできません。
: ※ <code>...</code> を行頭に付加させることはできません。
<br>
 
* '''各行の前後を囲う "カッコ"'''
* '''各行の前後を囲う "カッコ"'''
: カッコや HTML タグ、任意の記号、文字列を <code>"「...」"</code> や <code><nowiki>"<pre>...</pre>"</nowiki></code> のように記述して登録します。
: カッコや HTML タグ、任意の記号、文字列を <code>"「...」"</code> や <code><nowiki>"<pre>...</pre>"</nowiki></code> のように記述して登録します。
<br>
 
* '''各行の先頭にのみ記号や文字列を付加する場合'''
* '''各行の先頭にのみ記号や文字列を付加する場合'''
: <code>>..."</code> のように <code>...</code> の後ろに文字列をつけずに登録します。<br> 箇条書きのビュレットや行頭のコメントマーク、引用符などの挿入に利用できます。
: <code>>..."</code> のように <code>...</code> の後ろに文字列をつけずに登録します。<br> 箇条書きのビュレットや行頭のコメントマーク、引用符などの挿入に利用できます。
<br>
 
* '''各行の末尾にのみ記号や文字列を付加する場合'''
* '''各行の末尾にのみ記号や文字列を付加する場合'''
: <code>"...!?"</code> のように <code>...</code> の前に文字列をつけずに登録します。
: <code>"...!?"</code> のように <code>...</code> の前に文字列をつけずに登録します。
<br>
 
* ポップアップメニュー先頭の '''「任意の文字列...」コマンド''' を利用すれば、定義配列に登録していないカッコやタグ、記号など任意の文字列を指定することができます。
* ポップアップメニュー先頭の '''「任意の文字列...」コマンド''' を利用すれば、定義配列に登録していないカッコやタグ、記号など任意の文字列を指定することができます。
<br>


== ソースコード ==
== ソースコード ==
 
<syntaxhighlight lang="javascript">
<source lang="javascript">
#title = "カッコで囲う2"
#title = "カッコで囲う2"
#tooltip = "選択範囲の各行をカッコで囲う"
#tooltip = "選択範囲の各行をカッコで囲う"
107行目: 105行目:
     if ( s.Mode === meModeBox ) { s.Mode = meModeMulti; }
     if ( s.Mode === meModeBox ) { s.Mode = meModeMulti; }


     // ダイアログのテキスト入力フィールドから文字列を取得
     // ダイアログのテキスト入力フィールドで文字列を指定
     if ( r === 100000 ) {
     if ( r === 100000 ) {
      // 前回使用した文字列があれば再利用
      var tagKey = "brackets2", str1 = str2 = "";
      if ( window.Tag.Exists( tagKey ) ) {
        str1 = window.Tag( tagKey ).str1;
        str2 = window.Tag( tagKey ).str2;
      }
       var p1 = Prompt(
       var p1 = Prompt(
         "前につける文字列:\t改行 = \\\\\\n ; タブ = \\\\\\t  (注:¥記号3つ)", ""
         "前につける文字列:\t改行 = \\\\\\n ; タブ = \\\\\\t  (注:¥記号3つ)", str1
       ).replace( /\\\\\\n/g, "\n" ).replace( /\\\\\\t/g, "\t" );
       ).replace( /\\\\\\n/g, "\n" ).replace( /\\\\\\t/g, "\t" );
       var p2 = Prompt(
       var p2 = Prompt(
         "後ろにつける文字列:\t改行 = \\\\\\n ; タブ = \\\\\\t  (注:¥記号3つ)", ""
         "後ろにつける文字列:\t改行 = \\\\\\n ; タブ = \\\\\\t  (注:¥記号3つ)", str2
       ).replace( /\\\\\\n/g, "\n" ).replace( /\\\\\\t/g, "\t" );
       ).replace( /\\\\\\n/g, "\n" ).replace( /\\\\\\t/g, "\t" );
       if ( ! p1 && ! p2 ) { break main; }
       if ( ! p1 && ! p2 ) { break main; }
       pp[100000] = p1 + "..." + p2;
       pp[100000] = p1 + "..." + p2;
      window.Tag( tagKey ) = { str1: p1,  str2: p2 };
     }
     }


156行目: 161行目:
   }
   }
}
}
</source>
</syntaxhighlight>
<br>


== メモ ==
== メモ ==
<br>
* (2020/06/06, sukemaru)
* (2020/06/06, sukemaru)
: マルチカーソル選択範囲への任意の文字列挿入をマクロでおこなう方法としては「マルチカーソル貼り付け [https://www.haijin-boys.com/software/mery/mery-3-0-0#26]」がもっとも簡単そうなので、このようなかたちにしてみました。
: マルチカーソル選択範囲への任意の文字列挿入をマクロでおこなう方法としては「マルチカーソル貼り付け [https://www.haijin-boys.com/software/mery/mery-3-0-0#26]」がもっとも簡単そうなので、このようなかたちにしてみました。
: 「[[「クリップボード履歴」メニューのマクロ化|『クリップボード履歴』メニューのマクロ化]]」でのピン止めアイテム(スニペット)からの貼り付け用に考えた仕組みなので、そちらの次回更新バージョンにも取り入れる予定です。
: 「[[「クリップボード履歴」メニューのマクロ化|『クリップボード履歴』メニューのマクロ化]]」でのピン止めアイテム(スニペット)からの貼り付け用に考えた仕組みなので、そちらの次回更新バージョンにも取り入れる予定です。
<br>
740

回編集

スポンサーリンク