「位置情報を保存してから「すべて選択/選択解除」(非スクロール)」の版間の差分

MSY-07 (トーク | 投稿記録)
バージョンの表記を修正
MSY-07 (トーク | 投稿記録)
空行と改行の除去
 
2行目: 2行目:


== ダウンロード ==
== ダウンロード ==
;>> 「[[ファイル:【include 版】すべて選択/選択解除.zip]] (アイコン入り)」
;>> 「[[ファイル:【include 版】すべて選択/選択解除.zip]] (アイコン入り)」


14行目: 13行目:
:* リストに保存する各ファイルの情報を オブジェクト.プロパティ 形式に変更 (※ 以前のバージョンでの JSON ファイルと互換性なし)
:* リストに保存する各ファイルの情報を オブジェクト.プロパティ 形式に変更 (※ 以前のバージョンでの JSON ファイルと互換性なし)
:* Mery Ver 3.0.1 以降のマルチカーソル選択範囲の保存/復帰可 (※ ウインドウの「分割」状態には非対応)
:* Mery Ver 3.0.1 以降のマルチカーソル選択範囲の保存/復帰可 (※ ウインドウの「分割」状態には非対応)


== 【include 版】すべて選択/選択解除 (非スクロール) ==
== 【include 版】すべて選択/選択解除 (非スクロール) ==
以下のふたつのマクロを使って「すべて選択」/「選択範囲を解除」すると、無用なスクロールやキャレット移動がなくなります。<br>  
以下のふたつのマクロを使って「すべて選択」/「選択範囲を解除」すると、無用なスクロールやキャレット移動がなくなります。<br>  
また、<span style="color:#0000c0;">ふたつのマクロを交互に実行することで「任意の範囲選択状態」と「すべて選択状態」のトグル切り替えができます ('''マルチカーソルに対応''')。</span>
また、<span style="color:#0000c0;">ふたつのマクロを交互に実行することで「任意の範囲選択状態」と「すべて選択状態」のトグル切り替えができます ('''マルチカーソルに対応''')。</span>


お好みでツールバー(マクロバー)アイコンに登録するか、キーボードショートカットに割りあててご利用下さい。<br>  
お好みでツールバー(マクロバー)アイコンに登録するか、キーボードショートカットに割りあててご利用下さい。<br>  
※ すでに [[キーアサイン集]] の「[[キーアサイン集#すべて選択 (非スクロール)|すべて選択 (非スクロール)]]」「[[キーアサイン集#選択範囲を解除 (非スクロール)|選択範囲を解除 (非スクロール)]]」マクロを導入している場合は、当マクロのソースコードで上書き保存するのがよいとおもいます。
※ すでに [[キーアサイン集]] の「[[キーアサイン集#すべて選択 (非スクロール)|すべて選択 (非スクロール)]]」「[[キーアサイン集#選択範囲を解除 (非スクロール)|選択範囲を解除 (非スクロール)]]」マクロを導入している場合は、当マクロのソースコードで上書き保存するのがよいとおもいます。


<div id="すべて選択">
<div id="すべて選択">
39行目: 34行目:
:*ホイールスクロールなどによりキャレットが表示領域内にない状態、かつ「選択範囲なし」の状態で実行したときは、キャレットのある行まで画面をスクロールします。
:*ホイールスクロールなどによりキャレットが表示領域内にない状態、かつ「選択範囲なし」の状態で実行したときは、キャレットのある行まで画面をスクロールします。
:* 「マルチカーソル・複数選択範囲」の状態からこのマクロを連続で実行した場合 … (2020/11/01) <br> 1回目:各選択範囲のアクティブ側に各カーソルを残す(ゼロ幅のマルチカーソル)。<br> 2回目:マルチカーソルを解除する(カーソルを1つだけにする)。<br> ※ このマクロには、Mery Ver 3.0.0 以降の <kbd>Esc</kbd> キーによる「マルチカーソルの解除」と同等の機能(複数選択範囲からひとつの選択範囲だけを残す)を <u>含めていません</u>。
:* 「マルチカーソル・複数選択範囲」の状態からこのマクロを連続で実行した場合 … (2020/11/01) <br> 1回目:各選択範囲のアクティブ側に各カーソルを残す(ゼロ幅のマルチカーソル)。<br> 2回目:マルチカーソルを解除する(カーソルを1つだけにする)。<br> ※ このマクロには、Mery Ver 3.0.0 以降の <kbd>Esc</kbd> キーによる「マルチカーソルの解除」と同等の機能(複数選択範囲からひとつの選択範囲だけを残す)を <u>含めていません</u>。
<br>
<div class="warningbox">
<div class="warningbox">
* このページのマクロは、「[[includeライブラリ]]」を利用し、外部ファイル(JSON)に情報を保存/参照します。<br> あらかじめ「includeライブラリ」を Macros フォルダに配置してください。
* このページのマクロは、「[[includeライブラリ]]」を利用し、外部ファイル(JSON)に情報を保存/参照します。<br> あらかじめ「includeライブラリ」を Macros フォルダに配置してください。
48行目: 42行目:
:* JSON ファイルには、アクティブなタブの 「ファイルパス」 「全文字数」 「範囲選択モード」 「選択範囲の開始/終了位置」 「マルチカーソル選択範囲」 「スクロール位置」 「アクティブ行番号」 を保存します。<br> 複数のタブで「すべて選択」を実行した場合は、それぞれのタブの情報が保存されます。
:* JSON ファイルには、アクティブなタブの 「ファイルパス」 「全文字数」 「範囲選択モード」 「選択範囲の開始/終了位置」 「マルチカーソル選択範囲」 「スクロール位置」 「アクティブ行番号」 を保存します。<br> 複数のタブで「すべて選択」を実行した場合は、それぞれのタブの情報が保存されます。
:* JSON ファイルへのファイルアクセスが最小限になる仕様にしてあります。<br>また、「すべて選択」で位置情報を保存するときに、JSON ファイルに「他のタブで開かれていないファイルの位置情報」があれば、それらのファイル情報は逐次削除するので、JSON ファイルが肥大化することはありません。
:* JSON ファイルへのファイルアクセスが最小限になる仕様にしてあります。<br>また、「すべて選択」で位置情報を保存するときに、JSON ファイルに「他のタブで開かれていないファイルの位置情報」があれば、それらのファイル情報は逐次削除するので、JSON ファイルが肥大化することはありません。


※ [[#【include 版】位置を復帰/保存|選択範囲(キャレット位置)を保存/復帰するためのマクロ]] を追加しました。
※ [[#【include 版】位置を復帰/保存|選択範囲(キャレット位置)を保存/復帰するためのマクロ]] を追加しました。
:* 「任意の範囲選択状態」と「すべて選択状態」のトグル切り替えのさいに保存した位置情報を破棄せず、繰り返して「位置を復帰」の操作ができるようになります。
:* 「任意の範囲選択状態」と「すべて選択状態」のトグル切り替えのさいに保存した位置情報を破棄せず、繰り返して「位置を復帰」の操作ができるようになります。


== ソースコード ==
== ソースコード ==
216行目: 208行目:
  */
  */
</syntaxhighlight>
</syntaxhighlight>


=== 【include版】 選択範囲を解除 (非スクロール) ===
=== 【include版】 選択範囲を解除 (非スクロール) ===
356行目: 347行目:
}
}
</syntaxhighlight>
</syntaxhighlight>


== 【include 版】位置を復帰/保存 ==
== 【include 版】位置を復帰/保存 ==
単純に '''キャレット位置(選択範囲)を 保存/復元''' するためのマクロです (<b style="color:#0000c0;">マルチカーソルに対応</b>)。
単純に '''キャレット位置(選択範囲)を 保存/復元''' するためのマクロです (<b style="color:#0000c0;">マルチカーソルに対応</b>)。


ファイル内の閲覧のさいのスクロールや検索操作をする前などに、任意の位置(キャレット位置/選択範囲/アクティブ行)を '''一時保存''' し、任意のタイミングで復帰することができます。
ファイル内の閲覧のさいのスクロールや検索操作をする前などに、任意の位置(キャレット位置/選択範囲/アクティブ行)を '''一時保存''' し、任意のタイミングで復帰することができます。
<br><br>
 
※「位置情報を保存」と「位置を復帰」操作のあいだに編集操作(文書全体の文字数の変化)があった場合、復帰先は '''保存したアクティブ行番号の行頭位置''' になります。
※「位置情報を保存」と「位置を復帰」操作のあいだに編集操作(文書全体の文字数の変化)があった場合、復帰先は '''保存したアクティブ行番号の行頭位置''' になります。
<br>
<br>
※ 「[[#すべて選択|【include版】 すべて選択 (非スクロール)]]」マクロや「[[#選択解除|【include版】 選択範囲を解除 (非スクロール)]]」マクロと連携させて利用する前提で、位置情報保存用の JSON ファイルを共用します。
※ 「[[#すべて選択|【include版】 すべて選択 (非スクロール)]]」マクロや「[[#選択解除|【include版】 選択範囲を解除 (非スクロール)]]」マクロと連携させて利用する前提で、位置情報保存用の JSON ファイルを共用します。
<br><br>
 
* <span style="color:#0000c0;"><kbd>Ctrl</kbd> キーを押しながらこのマクロを実行したときは「'''位置情報を保存'''」します。</span>
* <span style="color:#0000c0;"><kbd>Ctrl</kbd> キーを押しながらこのマクロを実行したときは「'''位置情報を保存'''」します。</span>
: ※ ファイル名、文字数、選択範囲(キャレット位置)とスクロール位置などの情報を JSON ファイルに書き出します。
: ※ ファイル名、文字数、選択範囲(キャレット位置)とスクロール位置などの情報を JSON ファイルに書き出します。
379行目: 368行目:


*「位置を復帰」の前後でキャレット位置(選択範囲)に変化がないとき、または JSON ファイルに位置情報がないときは、キャレット位置までスクロールするだけです。
*「位置を復帰」の前後でキャレット位置(選択範囲)に変化がないとき、または JSON ファイルに位置情報がないときは、キャレット位置までスクロールするだけです。
<br>
 
* 「位置を復帰」の動作では JSON ファイルに保存された位置情報を削除しません。
* 「位置を復帰」の動作では JSON ファイルに保存された位置情報を削除しません。
: ※ <kbd>Ctrl</kbd> キーを押しながらこのマクロを実行したとき、または「【include版】 すべて選択 (非スクロール)」マクロ実行時の「位置情報を保存」処理のさいに、開かれていないファイルの位置情報は JSON から削除されます。
: ※ <kbd>Ctrl</kbd> キーを押しながらこのマクロを実行したとき、または「【include版】 すべて選択 (非スクロール)」マクロ実行時の「位置情報を保存」処理のさいに、開かれていないファイルの位置情報は JSON から削除されます。
396行目: 385行目:
: あらかじめ ZIP ファイルをダウンロード・解凍して、実行ファイル「GetKeyState.exe」を '''Mery\Macros''' フォルダに配置してください。
: あらかじめ ZIP ファイルをダウンロード・解凍して、実行ファイル「GetKeyState.exe」を '''Mery\Macros''' フォルダに配置してください。
</div>
</div>


=== ソースコード ===
=== ソースコード ===
622行目: 610行目:


== メモ ==
== メモ ==
* (2020/11/01, sukemaru)
* (2020/11/01, sukemaru)
:・画面の強制再描画によるチラツキを防ぐために、各ソースコード内の <syntaxhighlight lang="javascript" inline>Redraw = false</syntaxhighlight> <syntaxhighlight lang="javascript" inline>Redraw = true</syntaxhighlight> の処理をコメントアウトしました。
:・画面の強制再描画によるチラツキを防ぐために、各ソースコード内の <syntaxhighlight lang="javascript" inline>Redraw = false</syntaxhighlight> <syntaxhighlight lang="javascript" inline>Redraw = true</syntaxhighlight> の処理をコメントアウトしました。
:・Mery Ver 3.0.0 以降では <code>Document.Tag</code> プロパティを利用すれば複数の「'''無題-<n>'''」タブの位置情報を <q>個別</q> に保存/復帰できるのですが、その場合、タブの開きなおしや Mery の再起動で位置情報が消えてしまいます。<br> ⇒ ワークスペース機能を利用している場合の利便性を優先するために、外部ファイル(JSON)を利用する仕様のままにしました。
:・Mery Ver 3.0.0 以降では <code>Document.Tag</code> プロパティを利用すれば複数の「'''無題-<n>'''」タブの位置情報を <q>個別</q> に保存/復帰できるのですが、その場合、タブの開きなおしや Mery の再起動で位置情報が消えてしまいます。<br> ⇒ ワークスペース機能を利用している場合の利便性を優先するために、外部ファイル(JSON)を利用する仕様のままにしました。
:・このマクロでは、Mery Ver 3.1.0 以降で [ウインドウの分割(上下/左右)] 機能を利用しているさいに、分割ペインごとの位置情報(選択範囲・スクロール状態)を <q>個別</q> に保存/復帰することはできません。<br>※ アクティブなエディターペイン上で動作するはずですが、Mery アルファ/ベータ版のバージョンごとの動作検証はしていません。
:・このマクロでは、Mery Ver 3.1.0 以降で [ウインドウの分割(上下/左右)] 機能を利用しているさいに、分割ペインごとの位置情報(選択範囲・スクロール状態)を <q>個別</q> に保存/復帰することはできません。<br>※ アクティブなエディターペイン上で動作するはずですが、Mery アルファ/ベータ版のバージョンごとの動作検証はしていません。
スポンサーリンク